26 पॉइंट द्वारा geniuskey 2024-07-14 | 5 टिप्पणियां | WhatsApp पर शेयर करें

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() की जगह तेज़ और अधिक efficient os.scandir() का उपयोग करें: PEP 471.
  • external commands चलाने के लिए subprocess का उपयोग करें: PEP 324.
  • web client के लिए requests की जगह httpx का उपयोग करें।

project best practices

अधिक जानकारी के लिए पूरा लेख देखें।
.
.

Hacker News पर Python Modern Practices चर्चा का सारांश

Python Modern Practices पर Hacker News चर्चा में विभिन्न tools और methodologies पर उपयोगकर्ताओं की राय साझा की गई:

  1. UV के उपयोग की सिफारिश: UV का उपयोग तेज़ और आसान है, और समस्या आने पर support भी अच्छा मिलता है। by screye
  2. Rye का उल्लेख: Rye Python interpreter pinning और download को support करता है, और uv के साथ integration की योजना है। by rat87
  3. मौजूदा tools की सादगी पर ज़ोर: Mamba environment और basic pip से कोई समस्या नहीं है, इसलिए tools बदलने की ज़रूरत महसूस नहीं होती। by helsinki
  4. basic tools की पसंद: pip, venv, virtualenvwrapper का उपयोग करके अधिकांश समस्याएँ हल की जा सकती हैं। by throwadobe
  5. Pipenv के पक्ष में: Pipenv को एक complete solution के रूप में इस्तेमाल किया गया है, और यह अधिक व्यापक रूप से उपयोग क्यों नहीं होता, यह समझ नहीं आता। by routerl
  6. Poetry की समस्याएँ: Poetry Git commit version identifiers जोड़ने में विफल रहने जैसी समस्याओं के कारण निराशाजनक रही। by alisonatwork
  7. Conda और Mamba: Conda dependency management में कहीं अधिक शक्तिशाली है, और Mamba अधिक तेज़ है। by wanderingmind
  8. Packaging समस्या: Python की packaging समस्या का बड़ा कारण सामाजिक है, और यह हमेशा समस्या बनी रहेगी। by jampekka
  9. Pyenv के विकल्प का सुझाव: Mise, Pyenv से तेज़ है और Node projects को भी support करता है। by odie5533
  10. Pydantic models और data classes: Pydantic models validation में शक्तिशाली हैं लेकिन धीमे हैं, जबकि data classes हल्की और efficient हैं। by martinky24

विस्तृत जानकारी के लिए Hacker News चर्चा देखें।

5 टिप्पणियां

 
kaydash 2024-07-15

लाइब्रेरी को हल्का करने के बारे में कोई बात नहीं है।
miniconda3 के virtual env का उपयोग करके और unused lib हटाकर portable तरीके से deploy करना, yarn जैसे distributed processing systems में बेहतर performance की गारंटी देता था।

 
savvykang 2024-07-15

हमें pip-tools या uv का इस्तेमाल क्यों करना चाहिए? इसे आधुनिक या बेहतर बताने के दावे के पक्ष में कोई ठोस आधार बिल्कुल नहीं दिखता।

 
savvykang 2024-07-15

ऐसा लगता है कि pip dependency specifier में hash शामिल करने के पीछे मौजूदा pip behavior में build version को specify न कर पाने की समस्या है। इस तरह के संदर्भ के बिना सिर्फ दिशानिर्देशों की सूची देने वाली guide ज़्यादा भरोसेमंद नहीं लगती।

 
jwseo 2024-07-16

आप मुख्य रूप से क्या इस्तेमाल करते हैं??

 
savvykang 2024-07-16

अब तक मैं सिर्फ pip freeze के साथ काम करता था। मैं काम भी सिर्फ Windows/Linux सपोर्ट करने वाली लाइब्रेरी चुनकर कर रहा था, और patch version बदलने से होने वाली कोई समस्या अभी तक नहीं आई थी। फिर भी, अब जब मुझे समस्या का पता चल गया है, तो उसकी ज़रूरत समझ में आती है। बस, मैं pip-tools या uv थोड़ा और mature हो जाएँ तब उनके इस्तेमाल पर विचार करने वाला हूँ।