यहां एक नमूना प्रोजेक्ट है जो आपके प्रोजेक्ट को संरचित करने का एक बहुत अच्छा तरीका दिखाता है: https://github.com/kennethreitz/samplemod। यह प्रोजेक्ट "sample" मॉड्यूल बनाने के बारे में है। डायरेक्टरी संरचना इस प्रकार दिखती है:
README.rst
LICENSE
setup.py
requirements.txt
sample/__init__.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py
प्रत्येक फ़ाइल/डायरेक्टरी का उद्देश्य
README.rst फ़ाइल:
यह फ़ाइल मॉड्यूल का संक्षिप्त विवरण देने, इसे कैसे सेट करें, कैसे उपयोग करें, आदि के लिए है।
LICENSE:
लाइसेंस टेक्स्ट और कोई कॉपीराइट दावे शामिल हैं।
setup.py:
यह पायथन का बहु-प्लेटफॉर्म इंस्टॉलर और मेक फ़ाइल का उत्तर है। यदि आप कमांड-लाइन इंस्टॉलेशन से परिचित हैं, तो `make && make install` `python setup.py build && python setup.py install` में अनुवादित होता है। इसलिए यह उपयोगकर्ता मशीन पर आपके प्रोजेक्ट को बिल्ड करने के लिए उपयोग किया जाता है।
requirements.txt:
एक पिप आवश्यकता फ़ाइल को प्रोजेक्ट में योगदान के लिए आवश्यक निर्भरताओं को निर्दिष्ट करना चाहिए: परीक्षण, निर्माण, और दस्तावेज़ीकरण उत्पन्न करना। यदि आपके प्रोजेक्ट में कोई विकास निर्भरता नहीं है, या आप `setup.py` के माध्यम से विकास वातावरण सेटअप पसंद करते हैं, तो यह फ़ाइल अनावश्यक है।
docs/:
इस डायरेक्टरी में आपके प्रोजेक्ट का दस्तावेज़ीकरण होता है।
tests/:
आपके सभी परीक्षण इस डायरेक्टरी में होने चाहिए। प्रारंभ में आपके पास एक ही टेस्ट फ़ाइल होगी। जैसे-जैसे वे बढ़ते हैं, आप अपने टेस्ट को अपने मॉड्यूल डायरेक्टरी की तरह संरचित कर सकते हैं।
sample/:
इस डायरेक्टरी में आपका वास्तविक मॉड्यूल कोड होता है। यदि आपका मॉड्यूल केवल एक फ़ाइल से मिलकर बना है, तो आप इसे सीधे अपने रिपॉजिटरी के रूट में `sample.py` के रूप में रख सकते हैं। आपकी लाइब्रेरी एक अस्पष्ट `src` या `python` सबडायरेक्टरी में नहीं होनी चाहिए। यदि आप चाहते हैं कि यह मॉड्यूल एक पैकेज के भीतर रहे तो इसमें एक `__init__.py` फ़ाइल होगी।
आधुनिक प्रोजेक्ट संरचना (पायथन 3.7+ / pyproject.toml)
myproject/
├── pyproject.toml # आधुनिक बिल्ड कॉन्फ़िगरेशन (PEP 621)
├── README.md
├── LICENSE
├── src/
│ └── mypackage/
│ ├── __init__.py
│ ├── core.py
│ └── helpers.py
├── tests/
│ ├── __init__.py
│ ├── test_core.py
│ └── test_helpers.py
├── docs/
│ ├── conf.py
│ └── index.md
├── .github/
│ └── workflows/ # CI/CD
├── .gitignore
├── .pre-commit-config.yaml
└── Makefile / justfile # टास्क रनर
मुख्य आधुनिक उपकरण
- बिल्ड बैकएंड: `setuptools`, `flit`, `poetry`, `hatch`, `pdm`
- टेस्टिंग: `pytest`, `hypothesis`
- लिंटिंग/फॉर्मेटिंग: `ruff`, `black`, `mypy`
- दस्तावेज़ीकरण: `sphinx`, `mkdocs`
- CI/CD: GitHub Actions, GitLab CI
pyproject.toml उदाहरण
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "mypackage"
version = "1.0.0"
description = "एक नमूना पैकेज"
readme = "README.md"
license = {text = "MIT"}
authors = [{name = "आपका नाम", email = "you@example.com"}]
requires-python = ">=3.8"
dependencies = [
"requests>=2.28",
"pydantic>=2.0",
]
[project.optional-dependencies]
dev = ["pytest", "ruff", "black", "mypy"]
docs = ["mkdocs", "mkdocstrings"]
[tool.setuptools.packages.find]
where = ["src"]