लोकल डेवलपमेंट के लिए उपयोगी टूल

कुछ उपयोगी टूल, जो आपकी अपनी मशीन पर Exercism के Python कोड को डेवलप करने में मदद कर सकते हैं।


Note

यह हमारे समुदाय में लोकप्रिय टूल का एक संग्रह है। इसका उद्देश्य न तो किसी को कुछ करने का निर्देश देना है, न ही सब कुछ बताना। हमारा मानना है कि ये टूल अपना काम अच्छी तरह करते हैं, लेकिन निश्चित रूप से ऐसे और भी टूल हैं जो अच्छे हैं। अगर आपके पास किसी एडिटर, IDE, टूल या प्लगइन की सिफारिश है, तो हम चाहेंगे कि आप उसे GitHub पर इस दस्तावेज़ में जोड़ें।



शुरू करने से पहले यह सुनिश्चित कर लीजिए कि आपके पास Python का कोई नया संस्करण इंस्टॉल है। Exercism का वेब प्लेटफॉर्म इस समय Python 3.10 - 3.13.5 (अभ्यास और टेस्ट) और Python 3.13.5 (टूलिंग) का समर्थन करता है। हमारा ऑनलाइन टेस्ट रनर इस समय pytest 8.4.0 और pytest-subtests 0.14.2 का उपयोग करता है। हमारा ऑनलाइन एनालाइज़र pylint 4.0.4 का उपयोग करता है। Python, pytest या pylint के अलग-अलग संस्करण लोकली इस्तेमाल करने पर आपको वेबसाइट से अलग परिणाम मिल सकते हैं। अधिक जानकारी के लिए Python को लोकली इंस्टॉल करना देखिए।


वर्चुअल एनवायरनमेंट

Python के वर्चुअल एनवायरनमेंट रनटाइम और पैकेज के लिए हल्का आइसोलेशन देते हैं। ये आपके प्रोजेक्ट व्यवस्थित करने में मदद करते हैं, क्योंकि आप जो Python पैकेज इंस्टॉल करते हैं, वे किसी एक खास एनवायरनमेंट डायरेक्टरी के अंदर एक साथ रखे रहते हैं। अलग-अलग एनवायरनमेंट में Python रनटाइम के अलग-अलग संस्करण, साथ में प्रोजेक्ट या लाइब्रेरी की निर्भरताएँ भी रखी जा सकती हैं। इससे ऐसे बग और असंगतताओं से बचने में मदद मिलती है जो किसी एक प्रोजेक्ट के लिए लाइब्रेरी अपग्रेड करने पर पैदा होती हैं और किसी दूसरे प्रोजेक्ट की निर्भरता को "तोड़" देती हैं।

आज बहुत से वर्चुअल एनवायरनमेंट और वर्चुअल एनवायरनमेंट जैसे टूल इस्तेमाल में हैं, और वर्चुअल एनवायरनमेंट की जगह इनलाइन स्क्रिप्ट मेटाडेटा, डेव कंटेनर या docker इस्तेमाल करने का चलन बढ़ रहा है। यह ज़रूरी है कि आप अलग-अलग तरीके आज़माकर देखें और ऐसा तरीका चुनें जो आपकी डेवलपमेंट शैली और प्रोजेक्ट की ज़रूरतों के अनुकूल हो। यह न मान लीजिए कि यहाँ बताए गए तरीके हर जगह लागू होते हैं, या यही आपके पास एकमात्र विकल्प हैं। यहाँ न बताए गए टूल की अधिक सामान्य जानकारी के लिए Bas Nijholt की यह ब्लॉग पोस्ट देखिए और जिज्ञासु बने रहिए।

यहाँ हम तीन मुख्य वर्चुअल एनवायरनमेंट टूल पर चर्चा करेंगे: Python की स्टैंडर्ड लाइब्रेरी venv, तीसरे पक्ष का conda env, जो conda पैकेज मैनेजर और (आमतौर पर) Anaconda Python डिस्ट्रिब्यूशन का उपयोग करता है, और तीसरे पक्ष का pip + venv का विकल्प uv। तीनों को इस्तेमाल करना और/या इंस्टॉल करना काफी सीधा है।

इसके अलावा, PyEnv, Poetry और virtualenvwrapper ऐसे टूल हैं जो एक ही मशीन पर Python के कई संस्करण और कई Python एनवायरनमेंट मैनेज करने में मदद कर सकते हैं।


venv से वर्चुअल एनवायरनमेंट बनाना

venv से वर्चुअल एनवायरनमेंट बनाने के लिए उस डायरेक्टरी में cd कीजिए जहाँ आप अपने एनवायरनमेंट रखना चाहते हैं। यह डायरेक्टरी आपके प्रोजेक्ट के कोड से अलग होनी चाहिए, और ऐसी होनी चाहिए जिसे आप सोर्स कंट्रोल में नहीं डालेंगे। इसके बाद venv कमांड उस फोल्डर के नाम के साथ चलाइए जहाँ आप यह खास एनवायरनमेंट रखना चाहते हैं। आम तौर पर उस फोल्डर का नाम <project-name-here>_venv रखा जाता है:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

वर्चुअल एनवायरनमेंट सक्रिय करने के लिए यह कमांड चलाइए:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

वर्चुअल एनवायरनमेंट सक्रिय करने के लिए यह कमांड चलाइए:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

एक बार कोई venv सक्रिय हो जाने पर, आप एनवायरनमेंट के "अंदर" पैकेज इंस्टॉल करने के लिए pip कमांड चला सकते हैं। इंस्टॉल किए गए पैकेज venv के Python संस्करण से जुड़े होंगे और {name_of_virtual_env}/Lib के अंदर रखे जाएँगे।

किसी वर्चुअल एनवायरनमेंट को निष्क्रिय करने के लिए deactivate स्क्रिप्ट को कॉल करना होता है, जो activate वाली ही डायरेक्टरी में रहती है।


conda का उपयोग करके वर्चुअल एनवायरनमेंट बनाना

conda का नवीनतम संस्करण miniconda से इंस्टॉल किया जा सकता है। यह conda चीटशीट बहुत उपयोगी है, और conda के दस्तावेज़ भी।

शुरू में conda को "वैज्ञानिक Python" वाले लोकप्रिय Anaconda distribution के लिए Python पैकेज मैनेजर के रूप में बनाया गया था, बाद में इसे सामान्य और विस्तृत किया गया। conda एनवायरनमेंट venv जैसे ही होते हैं, पर मुख्य अंतर यह है कि conda, Python के अलावा कई और प्रोग्रामिंग भाषाओं के लिए भी वर्चुअल एनवायरनमेंट बना सकता है और पैकेज इंस्टॉल कर सकता है।

conda द्वारा समर्थित भाषाओं में R, JavaScript, Ruby, Fortran, C/C++, Scala, Java और बहुत कुछ शामिल हैं। conda और venv कमांड की तुलना के लिए conda का कमांड संदर्भ देखिए।


MacOS/Linux

conda एनवायरनमेंट बनाने के लिए नीचे दिया गया कमांड टाइप कीजिए, जिसमें {name of environment} की जगह अपनी चुनी हुई एनवायरनमेंट का नाम और python={version} की जगह Python का अपना मनचाहा संस्करण डालिए। इसके बाद आप जो भी अतिरिक्त पैकेज एनवायरनमेंट के अंदर इंस्टॉल करना चाहें, उनके नाम लिख सकते हैं:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Windows पर conda एनवायरनमेंट बनाने में Linux/MacOS जैसे ही सामान्य कमांड काम करते हैं। हालाँकि, conda को अपने path में जोड़ने के बजाय Anaconda के cmd या powershell प्रॉम्प्ट इस्तेमाल करना बेहतर है:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

uv के साथ प्रोजेक्ट पर काम करना: uv

uv Astral का बनाया हुआ एक Python पैकेज + प्रोजेक्ट मैनेजमेंट टूल है, जो Rust में लिखा गया है। इसे pip, venv, poetry और Python के अन्य पैकेजिंग/निर्भरता प्रबंधन टूल की जगह लेने के लिए बनाया गया था। Conda या Mamba के विपरीत, uv सिर्फ Python के लिए खास तौर पर बनाया गया है। हालाँकि, uv दूसरी भाषाओं, जैसे Fortran, में लिखे गए Python एक्सटेंशन मॉड्यूल बनाने का समर्थन करता है। Astral लोकप्रिय Ruff लिंटर और TY का भी डेवलपर है, जो Python टाइप हिंट के लिए एक स्टैटिक टाइप चेकर है। दोनों Rust में लिखे गए हैं।

यहाँ विस्तार में जाने के बजाय, इंस्टॉलेशन और सेटअप के लिए UV का दस्तावेज़ आपका सबसे अच्छा स्रोत है।

वर्चुअल एनवायरनमेंट रैपर

दस्तावेज़ और पृष्ठभूमि: virtualenvwrapper।

virtualenvwrapper पैकेज venv के ऊपर काम करता है और आपके सारे वर्चुअल एनवायरनमेंट एक ही जगह मैनेज करता है। आप lsvirtualenv (एनवायरनमेंट की सूची देखने के लिए) और mkvirtualenv (एनवायरनमेंट बनाने के लिए) जैसे linux जैसे कमांड से एनवायरनमेंट बना, कॉपी, डिलीट और बदल सकते हैं। यह एक्सटेंशन की मदद से और भी मैनेजमेंट टूल जोड़ने की सुविधा देता है। आप यह ट्यूटोरियल देखकर इस टूल के लिए अपने खुद के एक्सटेंशन भी बना सकते हैं।


PyEnv

pyenv लोकप्रिय rbenv/ruby-build टूल का Python के लिए बनाया गया फोर्क है। यह मूल रूप से स्क्रिप्ट और शिम का एक ऐसा समूह है जिससे आप Python के संस्करण पूरे सिस्टम के लिए और हर उपयोगकर्ता के लिए अलग-अलग सेट कर सकते हैं। यह Unix की उस परंपरा का पालन करने की कोशिश करता है, जिसमें एक टूल सिर्फ एक काम करता है और वह भी अच्छी तरह, बिना किसी दखल के।

pyenv और इसके दस्तावेज़ GitHub पर मिल सकते हैं।



एडिटर और IDE



Visual Studio Code

Visual Studio Code (VS Code) Microsoft का बनाया हुआ एक मुफ्त कोड एडिटर है। इसमें वर्चुअल/conda एनवायरनमेंट के साथ-साथ docker (docker प्लग-इन के ज़रिए) का भी बढ़िया समर्थन है, और इसे टेस्टिंग, लिंटिंग, फॉर्मेटिंग और वेब डेवलपमेंट के लिए कई अलग-अलग प्लगइन से बढ़ाया जा सकता है।

VS Code के लिए Python

Extension-id: ms-python.python

VS Code पर Python एक्सटेंशन हेडर

Microsoft का Python एक्सटेंशन VS Code के लिए Microsoft का आधिकारिक Python एक्सटेंशन है, और इसे इंस्टॉल करने की सलाह ज़रूर दी जाती है। इसमें एनवायरनमेंट मैनेजमेंट, टेस्ट मैनेजमेंट, लिंटिंग और डीबगिंग सहित कई फीचर हैं। नवीनतम रिलीज़ के अनुसार, MS Python एक्सटेंशन इंस्टॉल करने पर pylance (Python कोड की लिंटिंग और जाँच के लिए एक लोकप्रिय पैकेज) और jupyter (Jupyter Notebooks के साथ काम करने के लिए) भी डाउनलोड हो जाते हैं।

  • सेटअप के लिए यहाँ ट्यूटोरियल उपलब्ध है, और सेटिंग्स संदर्भ बहुत उपयोगी है।
  • Python संस्करण सेट करने या वर्चुअल एनवायरनमेंट के साथ काम करने की जानकारी यहाँ मिल सकती है।
  • VS Code में unittest और pytest सेट करने और उनके साथ काम करने की जानकारी यहाँ मिल सकती है।

PyCharm

PyCharm JetBrains का बनाया हुआ एक IDE (इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट) है। यह खास तौर पर Python के लिए बनाया गया है और पेशेवरों में लोकप्रिय है। VS Code की तरह, इसे भी कई मुफ्त और पेड प्लगइन, थीम और फॉर्मेटर से बढ़ाया जा सकता है। पेड संस्करण Django डेवलपमेंट, Docker डेवलपमेंट और डेटाबेस इंटीग्रेशन का भी समर्थन करता है।

Pycharm और Pytest
  • pycharm के साथ pytest सेट करने के चरण यहाँ मिल सकते हैं।
  • pycharm डिफॉल्ट रूप से unittest इस्तेमाल करता है, इसलिए जिस एनवायरनमेंट के साथ आप pycharm चला रहे हैं उसमें pytest इंस्टॉल होना चाहिए (ऊपर दिए गए इंटरप्रेटर और एनवायरनमेंट के दस्तावेज़ देखिए), और फिर pycharm को उसी की ओर इंगित करना पड़ता है।
  • टेस्ट चलाना सीधे GUI से काफी आसान है, लेकिन उसके पीछे के pytest पैरामीटर को अच्छे से देखना न भूलें, ताकि यह आपकी पसंद के मुताबिक सेट हो जाए।
  • pycharm में टेस्ट चलाने और डीबग करने का सामान्य दस्तावेज़ यहाँ मिल सकता है।
  • डीबगिंग के अतिरिक्त टूल और मार्गदर्शन यहाँ मिल सकते हैं।
    • चेतावनी: pytest के लिए coverage प्लगइन pycharm के डीबगर को तोड़ देगा। अधिक जानकारी के लिए run/debug configuration: pytest देखिए।

Spyder IDE

Spyder एक क्रॉस-प्लेटफॉर्म, मुफ्त और ओपन सोर्स Python IDE है, जो वैज्ञानिक समुदाय के लिए बनाई गई है। यह आमतौर पर Python के Anaconda डिस्ट्रिब्यूशन के साथ आता है, लेकिन इसे अकेले भी इंस्टॉल किया जा सकता है और Python के किसी भी संस्करण के साथ इस्तेमाल किया जा सकता है। हम स्टैंडअलोन इंस्टॉलेशन की सलाह देते हैं, ताकि अधिकतम लचीलापन मिले और पैकेज में कोई टकराव न हो।

Spyder venv और conda एनवायरनमेंट का पूरा समर्थन करता है। इसमें एक इंटीग्रेटेड IPython इंटरैक्टिव टर्मिनल, एक इंटरैक्टिव डीबगर, और एडिटर के भीतर ग्राफ बनाने और डेटा खोजने का भरपूर समर्थन शामिल है। अतिरिक्त कोड कम्पलीशन और लिंटिंग kite के ज़रिए उपलब्ध होती है। Jupyter Notebooks और टेस्टिंग टूल के साथ इंटीग्रेशन समुदाय द्वारा बनाए गए प्लगइन के ज़रिए उपलब्ध हैं। आप Spyder API का उपयोग करके अपने खुद के प्लगइन भी लिख सकते हैं।


Emacs

Emacs एक मुफ्त, ओपन सोर्स और बहुत ज़्यादा अनुकूलन योग्य टेक्स्ट एडिटर है, जो Lisp में लिखा गया है। Real Python पर एक बढ़िया इंस्टॉलेशन और सेटअप गाइड उपलब्ध है।

  • Emacs Wiki पर भी Emacs के साथ Python प्रोग्रामिंग की अच्छी गाइड है।
  • Full Stack Python पर भी Emacs शुरू करने के लिए कुछ अच्छी जानकारी और लिंक मौजूद हैं।

Vim

Vim Unix के स्टैंडर्ड vi टेक्स्ट एडिटर का मुफ्त और "बेहतर" संस्करण है। यह कई तरह के ऑपरेटिंग सिस्टम और Linux/Unix वेरिएंट पर उपलब्ध है। Real Python पर एक बढ़िया इंस्टॉलेशन और सेटअप गाइड उपलब्ध है, और काम के चीट शीट vimsheet, glump और rtorr पर मिल सकते हैं।

भले ही आपको लगे कि vim में Python कोड एडिट करना आपके लिए नहीं है, फिर भी कुछ बुनियादी कमांड से परिचित हो जाना अच्छा रहता है। Linux और Unix डिस्ट्रिब्यूशन में vim या vi अक्सर "बेस" या "डिफॉल्ट" टेक्स्ट एडिटर होता है, और उन सिस्टम पर git कमिट संदेशों (और दूसरी कई चीज़ों) के लिए यही डिफॉल्ट एडिटर होता है। बहुत संभव है कि आप किसी *nix सिस्टम पर फँस जाएँ और आपको सिर्फ vi के साथ कोई कॉन्फिगरेशन फाइल एडिट करनी पड़े, इसलिए vim से बाहर निकलना जानना (कम से कम) अच्छी आत्मरक्षा है।


Spacemacs

Spacemacs (github repo) Emacs का एक मुफ्त, समुदाय-संचालित डिस्ट्रिब्यूशन है, जो Emacs और Vim दोनों की कार्यक्षमता को जोड़ता है।

  • आधिकारिक दस्तावेज़ यहाँ मिल सकते हैं
  • opensource पर यह गाइड इंस्टॉलेशन और कॉन्फिगरेशन के विकल्पों का संक्षिप्त ब्यौरा देती है।
  • spacemacs का python layer टेस्टिंग, लिंटिंग, एनवायरनमेंट मैनेजमेंट और कोड फॉर्मेटिंग की सुविधा जोड़ता है।

Sublime Text

Sublime Text कोडिंग के लिए एक पेड टेक्स्ट एडिटर है, जिसे Sublime HQ Pty Ltd ने बनाया है। यह VS Code और Atom जैसा है, और इसमें अनुकूलन के लिए कई पैकेज और प्लगइन उपलब्ध हैं। आप Python का उपयोग करके एडिटर के लिए अपने खुद के प्लगइन बना सकते हैं।