سازماندهی پروژه برای تبدیل شدن به یک بسته
وقتی میخواهید کد خود را بهصورت یک کتابخانهی قابلنصب منتشر کنید، باید ساختار پروژه را استاندارد کنید. ساختار رایج امروزی به این شکل است:
my_package/
├── pyproject.toml
├── README.md
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── core.py
└── tests/
└── test_core.pyفایل pyproject.toml جایگزین مدرن فایل قدیمی setup.py شده و متادیتای بسته، وابستگیها و تنظیمات ابزار ساخت را در یک فایل استاندارد نگه میدارد:
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "my-package"
version = "0.1.0"
description = "یک بستهی نمونه"
requires-python = ">=3.10"
dependencies = [
"requests>=2.31",
]استفاده از پوشهی src (بهجای قرار دادن کد در ریشهی پروژه) یک قرارداد رایج است که از وارد کردن اشتباهیِ نسخهی نصبنشدهی بسته در زمان تست جلوگیری میکند. نگهداشتن تستها در پوشهای جدا نیز باعث میشود بستهی نهایی حجم کمتری داشته باشد و ساختار پروژه برای دیگر توسعهدهندگان قابلپیشبینیتر باشد.