मैं मैक पर पायथन 2 और 3 दोनों को स्थापित करने के लिए होमब्रे का उपयोग कैसे कर सकता हूं?


146

मुझे अजगर 2 और 3 के बीच आगे और पीछे स्विच करने में सक्षम होने की आवश्यकता है। मैं होमब्रे का उपयोग कैसे करूं क्योंकि मैं रास्ते में गड़बड़ नहीं करना चाहता और परेशानी में पड़ना चाहता हूं। अभी मैंने 2.7 होमब्रे के माध्यम से स्थापित किया है।


आप होमब्रे संदर्भ को हटाने के लिए प्रश्न को बदलना चाह सकते हैं क्योंकि यह आपके लक्ष्य को पूरा करने के लिए आवश्यक नहीं है (उदाहरण के लिए मेरा जवाब नीचे देखें stackoverflow.com/a/49091638/2923369 )
मैट श्लोबोह

जवाबों:


288

मैं pyenv का उपयोग करेगा आप इसे स्थापित कर सकते हैं:

$ brew install pyenv

अपने बैश शेल में पाइनेव को सक्षम करने के लिए, आपको चलाने की आवश्यकता है:

$ eval "$(pyenv init -)"

स्टार्टअप पर बैश के लिए स्वचालित रूप से ऐसा करने के लिए, उस लाइन को अपने में जोड़ें ~/.bash_profile1

उपयोग:

एक बार जब आप pyenv स्थापित कर लेते हैं और इसे सक्रिय कर लेते हैं, तो आप अजगर के विभिन्न संस्करणों को स्थापित कर सकते हैं और चुन सकते हैं कि आप किसका उपयोग कर सकते हैं। उदाहरण:

$ pyenv install 2.7.5

आप अपने द्वारा इंस्टॉल किए गए संस्करणों की जांच कर सकते हैं:

$ pyenv versions

और आप कमांड के साथ अजगर संस्करणों के बीच स्विच कर सकते हैं:

$ pyenv global 3.3.1

इसके अलावा आप वर्तमान निर्देशिका के लिए एक अजगर संस्करण सेट कर सकते हैं:

$ pyenv local 3.5.2

आप चलाकर देख सकते हैं python --version:

$ python --version
Python 3.5.2

1 होमब्रे आपको पाइनेव की स्थापना पर ऐसा करने के लिए निर्देश देता था , लेकिन संदेश हटा दिया गया था । Zsh और अन्य गोले के लिए, सटीक चरण भिन्न हो सकते हैं।


यह सबसे सरल उपाय है। मैं वर्तमान में पायथन 3 और 2.7.x के बीच स्विच करने के लिए इसका उपयोग करता हूं
नाज मीर

3
मैं पहले से ही के माध्यम से 2.7 अजगर स्थापित किया है homebrew , वहाँ कुछ भी मैं का उपयोग कर का ध्यान रखना चाहिए है pyenv ? क्या मैं pyenv के माध्यम से एक और अजगर 2.7 स्थापित कर सकता हूं ?
ड्रेक गुआन

3
हां, आप पायनव के माध्यम से एक और अजगर 2.7 स्थापित कर सकते हैं। यह उस अजगर को $ PYENV_ROOT / संस्करणों में स्थापित करेगा। जब आप "pyenv संस्करणों" को निष्पादित करते हैं, तो होमब्रे के माध्यम से स्थापित अन्य अजगर 2.7 "सिस्टम" के रूप में प्रकट हो सकता है।
मॉलीवेयर

5
मुझे eval "$(pyenv init -)"pyenv काम करने के लिए अपने .profile / .shshrc में जोड़ना पड़ा ।
रोहिणी

5
@ilciavo, आपको eval "$(pyenv init -)"अपने ~ /
.bash_profile

77

आप एक ही समय में दोनों संस्करण स्थापित कर सकते हैं।

होमब्रे के लिए> = 1.5.0:

1 मार्च 2018 से pythonसूत्र को पायथन 3.x में अपग्रेड किया जाएगा, जबकि python@2विशेष रूप से पायथन 2.7 के लिए एक नया सूत्र जोड़ा जाएगा।

यहां पाइथन के लिए Homebrew का उपयोग करने के बारे में परिवर्तन की घोषणा या अंतिम दस्तावेज देखें ।

पुराने होमब्रे के लिए:

अजगर के लिए 2.x:

brew install python

पायथन 3.x के लिए:

brew install python3

अब, आपके पास दोनों संस्करण आपके मशीन में स्थापित होंगे। जब आप संस्करण 2 का उपयोग करना चाहते हैं, तो pythonनिष्पादन योग्य का उपयोग करें । जब आप संस्करण 3 का उपयोग करना चाहते हैं, तो python3निष्पादन योग्य का उपयोग करें ।


प्रश्न दोनों का उपयोग कर के बारे में है
meduz

अद्यतन के लिए धन्यवाद! मैंने इसी तरह के मार्ग का अनुसरण किया था, लेकिन PYTHONPATHप्रत्येक परिवर्तन को निर्धारित करने में कोई समस्या थी ... कोई विचार? इसके अलावा, pyenvमहान है।
मेडुज

9
इसके अलावा, ध्यान दें कि python2 और python3 साथ-साथ हैं, कि अजगर python2 की ओर इशारा करता है और python3 python3 की अपेक्षा के अनुरूप होता है। हालाँकि, एक बड़ा गेटचा यह है कि पाइप pip2 को इंगित नहीं करता है जैसा कि आप उम्मीद कर सकते हैं। यह वास्तव में pip3 की ओर इशारा करता है (जैसा कि pip3 जाहिर है)। Pip2 का उपयोग करने के लिए, स्पष्ट रूप से pip2 का उपयोग करें। अजगर के लिए गैर संख्या प्रत्यय के लिए असंगत एक बिट 2 लेकिन पाइप अंक के लिए गैर संख्या प्रत्यय 3 करने के लिए 3.
जद

5
यह पाइप की तरह सामान्य निष्पादन योग्य गड़बड़ करता है। python3 इस मामले में को Python2 पिप के ऊपर लिख देगा और उस होगा डिफ़ॉल्ट "पिप" कमांड
kissgyorgy

1
@ Kissgyorgy की टिप्पणी के जवाब में: मुझे लगता है कि इस मुद्दे को नहीं था, इस मुद्दे पर अंतिम टिप्पणी मेरे लिए यह हल github.com/Homebrew/legacy-homebrew/issues/50607 , चल python3 -m pip install -U --force-reinstall pipतो python -m pip install -U --force-reinstall pipडाल बातें होने के लिए वापस pipअजगर 2 के को देखें pip
हैरी

11

वर्तमान में Homebrew Python 2 के लिए दो अलग-अलग सूत्र प्रदान करता है और 3. brew install pythonpython3 स्थापित करता है, और python2 brew install python@2स्थापित करता है। Homebrew डॉक्स में अधिक जानकारी:

https://docs.brew.sh/Homebrew-and-Python

यदि आपके पास वर्तमान में होमब्रेव के माध्यम से 2.x स्थापित है, तो Homebrew आपको एक संदेश देगा जैसे:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

यदि आप चलाते हैं:

brew upgrade python

आपको ऐसा करने में सक्षम होना चाहिए:

python --version

तथा

python3 --version

यह देखने के लिए कि पायथन 2.x और 3.x के कौन से संस्करण स्थापित हैं।


6

वैकल्पिक रूप से, आप शायद नवीनतम स्थापित 2.x संस्करण को चलाने के लिए अपने सबसे मौजूदा संस्करण python3.x और "python" या "python2" को चलाने के लिए बस "python3" दर्ज कर सकते हैं।


4

दोनों का उपयोग करने के तरीके हैं, लेकिन आज सबसे सरल उपाय पाइनेव का उपयोग करना है । pyenv संस्करणों के बीच आसान स्विचिंग की अनुमति देता है। यहाँ मैं सेट अप करने के लिए क्या किया है:

चरण 1:

अपने मैक से सभी अजगर निकालें

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

निम्नलिखित को निकालें ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

और निम्नलिखित से भी ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

STEP2 :

Pyenv और आपके द्वारा आवश्यक अजगर संस्करण स्थापित करें

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

STEP3 :

जोड़ने pyenv initके लिए bash_profileयाbashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

STEP4 :

जाँच करें कि क्या स्थापित है

pyenv versions
  • प्रणाली (/User/ishandutta2007/.pyenv/version द्वारा सेट)

    2.7

    3.7.0

step5:

एक डिफ़ॉल्ट चुनें

pyenv global 3.7.0

जब किसी प्रोजेक्ट को पुराने संस्करण की आवश्यकता होती है, तो बस उसके रूट फ़ोल्डर में जाएं और चलाएं

pyenv local 2.7

1

Asdf का प्रयोग करें !

असद का गाथा

एक बार जब एक प्रोग्रामिंग भाषा थी तो
इसके कई संस्करण थे
इसलिए लोगों ने इसके लिए एक संस्करण प्रबंधक लिखा।
परियोजनाओं के लिए संस्करणों के बीच स्विच करने के लिए
अलग, पुराने, नए।

तब और अधिक प्रोग्रामिंग भाषाएं
आईं इसलिए अधिक संस्करण प्रबंधक आए
और कई कमांड आए

मैंने उनमें से बहुत से इंस्टाल किए,
मैंने बहुत सारी कमांड सीखीं

फिर मैंने कहा, बस एक और संस्करण प्रबंधक
जो मैं इसके बजाय लिखूंगा

तो, वहाँ एक और संस्करण प्रबंधक
asdf संस्करण प्रबंधक आया - https://github.com/asdf-vm/asdf

एक संस्करण प्रबंधक इतना विस्तार योग्य
है जिसके लिए कोई भी एक प्लगइन बना सकता है
अपनी पसंदीदा भाषा का समर्थन
करने के लिए और अधिक संस्करण प्रबंधक स्थापित करना
या अधिक कमांड सीखना नहीं

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


मुझे लगता है कि ये प्रतिस्पर्धी उपकरण नहीं हैं, लेकिन एक ही उपकरण, एक बार (और कभी-कभी एक से अधिक बार) प्रति भाषा में लागू किया जाता है। की तरह क्यों हम LSP के रूप में अच्छी तरह से कुछ की जरूरत है, IMHO। microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

मुझे लगा कि मुझे एक ही आवश्यकता है - पायथन संस्करणों के बीच स्थानांतरित करने के लिए - लेकिन मैंने उपयोग किए जाने के बजाय स्रोत से निर्माण करके केवल पायथन 3.6 के साथ मेरी आवश्यकता को प्राप्त किया homebrew

git clone https://git.<theThingYouWantToInstall>

रेपो के आधार पर, जांच करें कि क्या इस विकल्प के लिए पहले से ही सेटअप फ़ाइल है।



-3

ठीक है, मैं Python3 के अपने काढ़ा स्थापना के साथ संघर्ष कर रहा था, क्योंकि मेरे पास pip3 नहीं था

sudo pip3 command not found

और इसलिए मैंने किया

brew uninstall --force --ignore-dependencies python3

और आधिकारिक वितरण से नियमित पायथन 3.6.2 स्थापित किया और फिर मेरे पास pip3 था और सभी घटक ठीक थे।


ओपी दोनों को स्थापित करने के बारे में पूछ रहा है।
अजीत गंगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.