यहां एक नमूना प्रोजेक्ट है जो आपके प्रोजेक्ट को संरचित करने का एक बहुत अच्छा तरीका दिखाता है: 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` फ़ाइल होगी।
आधुनिक मानक: src लेआउट + 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
├── .pre-commit-config.yaml
└── .gitignore
src लेआउट के लाभ
- इंस्टॉल किए गए पैकेज के साथ इम्पोर्ट टकराव रोकता है
- `pip install -e .` सही तरीके से काम करता है
- टेस्ट इंस्टॉल किए गए संस्करण के विरुद्ध चलते हैं
- पैकेजिंग टूल्स (setuptools, poetry, hatch) द्वारा समर्थित
आवश्यक फ़ाइलें चेकलिस्ट
| फ़ाइल | आवश्यक | उद्देश्य |
|---|---|---|
| pyproject.toml / setup.py | हां | बिल्ड/इंस्टॉल कॉन्फ़िगरेशन |
| README.md | हां | प्रोजेक्ट विवरण |
| LICENSE | हां | कानूनी |
| .gitignore | हां | Git बहिष्करण |
| requirements.txt / dependencies | अनुशंसित | निर्भरता |
| tests/ | अनुशंसित | गुणवत्ता आश्वासन |
| docs/ | वैकल्पिक | दस्तावेज़ीकरण |