- कई Python versions के बीच आसानी से स्विच करने देता है
- सरल, unobtrusive और भरोसेमंद single-purpose UNIX पारंपरिक टूल के सिद्धांत का पालन करता है
- यह प्रोजेक्ट rbenv और ruby-build से fork किया गया है और Python के लिए अनुकूलित किया गया है
pyenv क्या करता है
- user basis पर global Python version बदल सकता है।
- project-specific Python version को support करता है।
- environment variables का उपयोग करके Python version को override कर सकता है।
- एक साथ Python commands के कई versions खोज सकता है। यह tox का उपयोग करके अलग-अलग Python versions के बीच testing के लिए उपयोगी है।
pyenv क्या नहीं करता...
- Python खुद पर निर्भर नहीं करता। pyenv pure shell scripts से बना है।
- इसे shell में load करने की जरूरत नहीं होती। इसके बजाय, यह
PATH में directory जोड़ने वाले shim approach का उपयोग करता है।
- virtualenv को manage नहीं करता। हालांकि, उपयोगकर्ता खुद virtualenv बना सकते हैं या pyenv-virtualenv का उपयोग करके इसे automate कर सकते हैं।
यह कैसे काम करता है
- pyenv
PATH में inject किए गए shim executables का उपयोग करके Python commands को intercept करता है, application द्वारा निर्दिष्ट Python version तय करता है, और फिर command को उसी Python installation तक forward करता है।
PATH को समझना
- जब आप
python या pip जैसे commands चलाते हैं, तो operating system PATH environment variable में मौजूद directories की सूची में उस नाम के executable को खोजता है।
Shims को समझना
- pyenv
PATH की शुरुआत में shims directory insert करता है। rehashing प्रक्रिया के जरिए, यह सभी installed Python versions के सभी Python commands के लिए shims बनाए रखता है।
Python version selection को समझना
- shim चलने पर, pyenv Python version को निम्न sources से इस क्रम में पढ़कर उपयोग करता है:
PYENV_VERSION environment variable (अगर सेट हो)।
- current directory की application-specific
.python-version file (अगर मौजूद हो)।
- file system के root तक पहुंचने तक हर parent directory में खोजकर मिली पहली
.python-version file (अगर मौजूद हो)।
- global
$(pyenv root)/version file।
pyenv द्वारा प्रदान किए गए Python install location को खोजना
- pyenv द्वारा तय किए गए Python version के अनुसार command को संबंधित Python installation तक भेजा जाता है।
- हर Python version
$(pyenv root)/versions के अंतर्गत अपनी अलग directory में install होता है।
उपयोग
अतिरिक्त Python versions install करना
pyenv install का उपयोग करके अतिरिक्त Python versions install करें।
latest version को अपने आप resolve करना
uninstall को छोड़कर सभी Pyenv subcommands अपने आप full prefix को latest version में resolve कर देते हैं।
extended support वाले Python versions
- कुछ Python releases में खास environments के लिए support जोड़ने हेतु user-provided patches लागू किए जाते हैं।
Python versions के बीच स्विच करना
- Pyenv द्वारा install किए गए Python का उपयोग करने के लिए नीचे दिए गए commands में से कोई एक चलाएं:
pyenv shell
pyenv local
pyenv global
Python version हटाना
- समय के साथ
$(pyenv root)/versions directory में Python versions जमा हो जाते हैं।
- पुराने Python versions हटाने के लिए
pyenv uninstall का उपयोग करें।
अन्य कार्य
- सभी उपलब्ध subcommands की सूची देखने के लिए
pyenv commands चलाएं।
pyenv हटाना
- Pyenv को अस्थायी रूप से disable करना या system से हटाना आसान है।
Pyenv plugins
- plugins का उपयोग करके Pyenv की functionality को सरल, flexible और maintainable तरीके से बढ़ाया और customize किया जा सकता है।
advanced configuration
- ऐसे environment variables मौजूद हैं जो Pyenv के behavior को control करते हैं।
development
- Pyenv source code GitHub पर host किया गया है।
- tests चलाने के लिए Bats का उपयोग किया जाता है।
GN⁺ की राय
- pyenv, अलग-अलग Python versions को manage करने के लिए बेहद उपयोगी टूल है। खासकर उन developers के लिए जो कई projects में Python के अलग versions इस्तेमाल करते हैं।
- यह टूल Python खुद पर निर्भर नहीं करता और pure shell scripts से बना है, इसलिए Python के बिना install हुए systems पर भी इसे install और manage किया जा सकता है।
- pyenv सीधे virtualenv को manage नहीं करता, लेकिन pyenv-virtualenv plugin के जरिए virtualenv management को automate किया जा सकता है, जो काफी सुविधाजनक है।
- इसकी installation और usage अपेक्षाकृत सरल है, इसलिए Python version management की जरूरत वाले शुरुआती software engineers भी इसे आसानी से अपना सकते हैं।
- pyenv जैसी functionality देने वाला एक और टूल
conda है, जो खासकर data science और machine learning क्षेत्र में व्यापक रूप से इस्तेमाल होता है। conda package management और environment management दोनों प्रदान करता है, इसलिए जिन उपयोगकर्ताओं को ये features चाहिए उनके लिए यह उपयुक्त हो सकता है।
- pyenv अपनाते समय ध्यान रखना चाहिए कि अगर system में Python के कई versions पहले से installed हों, तो path conflicts से बचा जाए। pyenv का बड़ा फायदा version management की आसानी है, लेकिन गलत configuration system के default Python path में दखल दे सकती है।
7 टिप्पणियां
conda के बारे में ध्यान रखें, कुछ निश्चित आकार की कंपनियों में
यह paid है.
कंपनी छोटी हो तब भी अगर मूल क्लाइंट का आकार बड़ा हो, तो डिलीवरी देना मुश्किल हो जाता है
conda खुद BSD के तहत मुफ़्त है, लेकिन repository और package licenses को ध्यान से देखना चाहिए।
मैं ऊपर लेवल पर asdf सेट करके रखता हूँ https://asdf-vm.com/
और project के हिसाब से कभी local में configure करता हूँ, कभी container का इस्तेमाल भी करता हूँ...
नया environment सेटअप + manage करने के लिए अब बहुत कुछ आ गया है, इसलिए इन दिनों इसे ज़्यादा इस्तेमाल नहीं कर रहा हूँ.. हाहा
मैं भी ठीक ऐसे ही इस्तेमाल करता/करती हूँ.
हाहाहा, व्यक्तिगत रूप से मुझे लगता है कि pyenv अब थोड़ा पुराना-सा महसूस होता है.
rbenv, pyenv, nodenv जैसी चीज़ें लगातार आती रहीं, तो आखिरकार anyenv जैसा कुछ भी आ गया। हा हा
https://github.com/anyenv/anyenv
Hacker News राय
pyenv के उपयोग पर चेतावनी
Python programmers की परेशानी
Python programs को स्थिर रखने वाले टूल
Mise टूल का परिचय
ASDF के फायदे
pyenv उपयोग का अनुभव
python<version> -m venv /my/virtual/envके ज़रिए virtual environment manage करना अधिक स्थिर है.व्यक्तिगत Python management stack
Mise के साथ runtime dependency management
macOS workflow साझा
मुझे लगता है कि यही हिस्सा सबसे ज़्यादा तकलीफ़देह है।