Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन मॉड्यूल व्यवस्थित करने के सर्वोत्तम अभ्यास क्या हैं?

यहां एक नमूना प्रोजेक्ट है जो आपके प्रोजेक्ट को संरचित करने का एक बहुत अच्छा तरीका दिखाता है: 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"]
  1. - Python में Packages क्या हैं?

    Python Packages को समझना Packages को समझने के लिए, आपको Modules के बारे में भी जानना होगा। कोई भी Python File एक Module होती है, इसका नाम File के Base Name/Module के __name__ Property बिना .py Extension के होता है। Package Python Modules का Collection है, यानी एक Package, Python Modules की एक Dire

  1. - पायथन एक्सेप्शन को लॉग करने का सबसे अच्छा तरीका क्या है?

    हम logging मॉड्यूल इम्पोर्ट करते हैं और फिर पायथन एक्सेप्शन का लॉग बनाने के लिए logging.exception मेथड का उपयोग करते हैं। उदाहरण import logging try: print(toy + 6) except Exception as e: logging.exception(This is an exception log) आउटपुट हमें निम्न आउटपुट मिलता है: ERROR:root:This is an exce

  1. - पायथन में एक्सेप्शन हैंडलिंग के लिए सर्वोत्तम अभ्यास क्या हैं?

    पायथन में एक्सेप्शन हैंडलिंग के लिए कुछ सर्वोत्तम अभ्यास नीचे दिए गए हैं: एक्सेप्शन एरर स्टेटस कोड लौटाने से बेहतर हैं। हमें पायथन में एक्सेप्शन को हैंडल करना होगा क्योंकि पूरी भाषा कोर और स्टैंडर्ड लाइब्रेरीज एक्सेप्शन फेंकती हैं। सुंदर ढंग से हैंडल किए गए एक्सेप्शन किसी भी दिन एरर कोड्स और ट्रेस