Stuart Ellis के Python के लिए आधुनिक सर्वोत्तम अभ्यास
(stuartellis.name)Modern Good Practices for Python Development
Stuart Ellis के Python के लिए आधुनिक सर्वोत्तम अभ्यास में Python development करते समय ध्यान रखने योग्य महत्वपूर्ण बिंदुओं पर चर्चा की गई है। मुख्य बातें इस प्रकार हैं:
Python का उपयोग
- operating system में built-in Python का उपयोग करने से बचें: operating system में built-in Python पुराना version हो सकता है।
- कई versions को support करने वाले tools से Python install करें: pyenv या mise जैसे tools का उपयोग करें।
- Python का नवीनतम version उपयोग करें: security patches और performance improvements के लिए latest stable version का उपयोग करें।
- developer applications चलाने के लिए pipx का उपयोग करें: pipx के जरिए isolated environment में applications चलाएँ।
- project tools का उपयोग करें: PDM, Hatch, Mise, Rye की सिफारिश की गई है।
Python project development
- code formatting: Ruff का उपयोग करें।
- code linting: Ruff की सिफारिश की गई है।
- pytest से testing: संबंधित plugins (pytest-randomly, pytest-cov) का उपयोग करें।
- packaging: wheel package का उपयोग करें और ज़रूरत होने पर container image या PyInstaller का उपयोग करें।
भाषा सिंटैक्स
- type hinting का उपयोग करें: PEP 484, PEP 526.
- string formatting के लिए f-strings का उपयोग करें: PEP 498.
- timezone-aware datetime objects का उपयोग करें: PEP 615.
application design
print()की जगह logging का उपयोग करें।- configuration के लिए TOML format का उपयोग करें: PEP 680.
- asynchronous I/O का उपयोग केवल आवश्यकता होने पर करें।
libraries
- argparse से command-line input handle करें।
- pathlib से file और directory paths handle करें।
os.listdir()की जगह तेज़ और अधिक efficientos.scandir()का उपयोग करें: PEP 471.- external commands चलाने के लिए
subprocessका उपयोग करें: PEP 324. - web client के लिए requests की जगह httpx का उपयोग करें।
project best practices
pyproject.tomlfile का उपयोग करें: PEP 517, PEP 518, PEP 621, PEP 660.- src layout का उपयोग करें: src layout और flat layout की तुलना.
- development के लिए virtual environments का उपयोग करें: venv, PDM, Hatch, Mise की सिफारिश की गई है।
- package installation के लिए requirements files का उपयोग करें: pip-tools के जरिए pip-compile या uv का उपयोग करें।
अधिक जानकारी के लिए पूरा लेख देखें।
.
.
Hacker News पर Python Modern Practices चर्चा का सारांश
Python Modern Practices पर Hacker News चर्चा में विभिन्न tools और methodologies पर उपयोगकर्ताओं की राय साझा की गई:
- UV के उपयोग की सिफारिश: UV का उपयोग तेज़ और आसान है, और समस्या आने पर support भी अच्छा मिलता है। by screye
- Rye का उल्लेख: Rye Python interpreter pinning और download को support करता है, और uv के साथ integration की योजना है। by rat87
- मौजूदा tools की सादगी पर ज़ोर: Mamba environment और basic pip से कोई समस्या नहीं है, इसलिए tools बदलने की ज़रूरत महसूस नहीं होती। by helsinki
- basic tools की पसंद: pip, venv, virtualenvwrapper का उपयोग करके अधिकांश समस्याएँ हल की जा सकती हैं। by throwadobe
- Pipenv के पक्ष में: Pipenv को एक complete solution के रूप में इस्तेमाल किया गया है, और यह अधिक व्यापक रूप से उपयोग क्यों नहीं होता, यह समझ नहीं आता। by routerl
- Poetry की समस्याएँ: Poetry Git commit version identifiers जोड़ने में विफल रहने जैसी समस्याओं के कारण निराशाजनक रही। by alisonatwork
- Conda और Mamba: Conda dependency management में कहीं अधिक शक्तिशाली है, और Mamba अधिक तेज़ है। by wanderingmind
- Packaging समस्या: Python की packaging समस्या का बड़ा कारण सामाजिक है, और यह हमेशा समस्या बनी रहेगी। by jampekka
- Pyenv के विकल्प का सुझाव: Mise, Pyenv से तेज़ है और Node projects को भी support करता है। by odie5533
- Pydantic models और data classes: Pydantic models validation में शक्तिशाली हैं लेकिन धीमे हैं, जबकि data classes हल्की और efficient हैं। by martinky24
विस्तृत जानकारी के लिए Hacker News चर्चा देखें।
5 टिप्पणियां
लाइब्रेरी को हल्का करने के बारे में कोई बात नहीं है।
miniconda3 के virtual env का उपयोग करके और unused lib हटाकर portable तरीके से deploy करना, yarn जैसे distributed processing systems में बेहतर performance की गारंटी देता था।
हमें pip-tools या uv का इस्तेमाल क्यों करना चाहिए? इसे आधुनिक या बेहतर बताने के दावे के पक्ष में कोई ठोस आधार बिल्कुल नहीं दिखता।
ऐसा लगता है कि pip dependency specifier में hash शामिल करने के पीछे मौजूदा pip behavior में build version को specify न कर पाने की समस्या है। इस तरह के संदर्भ के बिना सिर्फ दिशानिर्देशों की सूची देने वाली guide ज़्यादा भरोसेमंद नहीं लगती।
आप मुख्य रूप से क्या इस्तेमाल करते हैं??
अब तक मैं सिर्फ
pip freezeके साथ काम करता था। मैं काम भी सिर्फ Windows/Linux सपोर्ट करने वाली लाइब्रेरी चुनकर कर रहा था, और patch version बदलने से होने वाली कोई समस्या अभी तक नहीं आई थी। फिर भी, अब जब मुझे समस्या का पता चल गया है, तो उसकी ज़रूरत समझ में आती है। बस, मैंpip-toolsयाuvथोड़ा और mature हो जाएँ तब उनके इस्तेमाल पर विचार करने वाला हूँ।