मैं डिफ़ॉल्ट पायथन के रूप में काढ़ा स्थापित पायथन का उपयोग कैसे करूं?


187

मैं मैक ओएस एक्स 10.6.2 पर होमब्रे (फ़िंक और मैकपोर्ट का उपयोग करने के बाद) पर स्विच करने का प्रयास करता हूं। मैंने अजगर 2.7 के साथ स्थापित किया है

brew install python 

समस्या यह है कि, Macport के विपरीत, ऐसा लगता है कि कोई python_select उपयोगिता नहीं है, और मेरा डिफ़ॉल्ट mac python हमेशा डिफ़ॉल्ट है

which python

मुझे दो

/usr/bin/python

और /usr/bin/pythonकोई सिमलिंक नहीं है

मैं अपने डिफ़ॉल्ट अजगर होने के लिए अजगर काढ़ा का स्वाद कैसे बना सकता हूं?


14
होमब्यू अब अजगर की प्रणाली स्थापना को छाया नहीं देता है। आप कर सकते हैं: export PATH="/usr/local/opt/python/libexec/bin:$PATH"स्रोत: discourse.brew.sh/t/...
जॉर्ज

3
मैंने सभी उल्लिखित जवाबों की कोशिश की, / usr / स्थानीय / बिन मेरे $ PATH में usr / bin से पहले आता है। मैंने ब्रुअ लिंक और अनलिंक करने की कोशिश की, ब्रू डॉक्टर ने / usr / bin को पहले / usr / लोकल / बिन इश्यू होने की सूचना नहीं दी। फिर भी जब मैं कौन सा अजगर करता हूं, मुझे मिलता है / usr / बिन / अजगर और नहीं एक काढ़ा के साथ स्थापित।
उज्जवल रात्रि

कोशिश ... जो python2
Fraser

जवाबों:


117

जैसा कि आप Homebrew का उपयोग कर रहे हैं निम्नलिखित कमांड एक बेहतर तस्वीर देता है:

brew doctor

आउटपुट:

==> / usr / bin इससे पहले / usr / लोकल / बिन होता है इसका मतलब यह है कि सिस्टम-प्रदान किए गए प्रोग्राम का उपयोग Homebrew द्वारा प्रदान किए गए लोगों के बजाय किया जाएगा। यदि आप उदाहरण के लिए यह एक समस्या है। काढ़ा स्थापित पायथन।

अपने .bash_profile को एडिट करने पर विचार करें: / usr / लोकल / बिन से आगे / usr / bin अपने $ PATH में।


4
सुनिश्चित करें कि आपके पास अपने रास्ते में / उपयोगकर्ता / स्थानीय / बिन TWICE नहीं है। मेरे पेट में किसी कारण से यह पहले और बाद में / usr / bin दोनों में दिखाई दिया और यह मुझे पागल कर रहा था।
vinaut

1
कई प्रोग्राम हेडर / usr / bin / python का उपयोग हेडर में करते हैं, यह एक व्यवहार्य समाधान नहीं है।
मिसेचुएट

5
उच्च सिएरा में काढ़ा केवल python2/ usr / स्थानीय / बिन में है, सिर्फ के लिए python; सेट export PATH="/usr/local/opt/python/libexec/bin:$PATH"में~/.bash_profile
tormodatt

86

देखें: Homebrew में सहानुभूति अजगर कैसे करें?

$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python

10
जब मैं शराब पीता हूँ तो यह क्यों नहीं होता?
बेन वेस्ट

4
@BenWest क्योंकि python3, अब आपको python2 मिलता है बल्कि तब python।
जार्जेक्स

1
मेरे पास यह सक्षम नहीं है।
theonlygusti

1
मेरे मामले में, मुझे इस कमांड को चलाने के बाद टर्मिनल को फिर से शुरू करने की आवश्यकता थी (जैसा कि मार्टिज़न कोर्टो के जवाब द्वारा उल्लेख किया गया है )
jkmartindale

2
यह मेरे लिए अजगर @ 2 लिंक
एंड्रयू बी। 1

63

जल्दी ठीक:

  1. खुला हुआ /etc/paths
  2. लाइनों का क्रम बदलें (शीर्ष पर सर्वोच्च प्राथमिकता)

मेरे मामले में /etc/pathsऐसा दिखता है:

/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin

यदि आप OSX में पथों के बारे में अधिक जानना चाहते हैं तो मुझे यह लेख काफी उपयोगी लगा:

http://muttsnutts.github.com/blog/2011/09/12/manage-path-on-mac-os-x-lion/


1
धन्यवाद, उपरोक्त सभी जवाबों ने मेरी समस्या को हल कर दिया, लेकिन आपका किया! आपको बहुत - बहुत धन्यवाद!
सीन

7
इसके साथ समस्या यह है कि यह सभी उपयोगकर्ताओं के लिए इसे बदल देता है: /, IMO यह बेहतर है कि कुछ और विशिष्ट बदल दिया जाए।
रान्डेल हंट

@ रैंडलहंट क्या और कैसे?
माइक कर्मेंडी

63

जैसा कि होमब्रेव इंस्टॉलर ने सुझाव दिया है, इसे अपने .bashrcया अपने साथ जोड़ना सुनिश्चित करें .zshrc:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

11
हाई सिएरा पर यह सही विधि है। पक्ष में मत देना!
tormodatt

MacOS zsh टर्मिनल के लिए डिफॉल्ट करता है, इसलिए संभावना है कि यह .zshrcफाइल है न .bashrcकि वह फाइल जिसे बदलने की जरूरत है।
user394430

1
इसके सिवाय मेरे लिए किसी भी अन्य जवाब ने काम नहीं किया! यहाँ macOS कैटालिना चल रहा है। धन्यवाद!
अली अकबर

यह सही उत्तर है
हर्षमार्शमेलो

44

मैंने OSX हाई सिएरा के लिए "काढ़ा स्थापित अजगर" किया। $PATHथा /usr/local/binकिसी अन्य पथ से पहले, लेकिन अभी भीwhich python सिस्टम के अजगर की ओर इशारा करते था।

जब मैंने गहराई से देखा तो मैंने पाया कि वहाँ कोई अजगर नहीं है /usr/local/bin। निष्पादन योग्य नाम दिया गया है python2। इस समस्या को ठीक करने के pythonलिए python2:

/usr/local/bin $: ln -s python2 python


4
इसकी पुष्टि हाई सिएरा
रैंडम डेडक्शन

आप मेरे हीरो हैं। विश्वास नहीं कर सकता मैं इस समाधान का एहसास नहीं था!
स्मोकिन जो

3
इसके अलावा आवेदन के लिए टर्मिनल को फिर से शुरू करने की आवश्यकता है
लेक्सा-बी

3
$ cd / usr / स्थानीय / बिन $ ln -s python3 अजगर
Pememonic

1
और मुझे लगता है कि pip3 (या pip2) से भी सिम्प्ल-लिंक पाइप है?
alexP_Keaton

23

Homebrew "/ usr / bin" में सामान को प्रतिस्थापित नहीं करता है। आप बस अपने रास्ते में "/ usr / स्थानीय / बिन" को "/ usr / बिन" से आगे रखना चाहते हैं, फिर "कौन सा अजगर" आपको "usr / स्थानीय / बिन / अजगर" देगा।

रिप्लेस / usr / bin / python (या / usr / bin / ruby) अत्यधिक अप्राप्य है।


2
लेकिन यह नहीं है!
Theonlygusti

22

pythonसूत्र अब उपयोग करता है python3( अब के लिए v3.6.5), काढ़ा निर्देशिका को लिंक करेगा :

/usr/local/opt/python -> ../Cellar/python/3.6.5

यह बाइनरी को भी लिंक करेगा :

/usr/local/bin/python3 -> ../Cellar/python/3.6.5/bin/python3

यदि आपको अभी भी उपयोग करने की आवश्यकता है python2.x, तो उपयोग करें:

brew install python@2

होमब्रे का उपयोग करने के लिए python, बस अपनी निर्देशिका को पाथ में, बैश के लिए रखें:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

मछली के लिए:

set -x PATH /usr/local/opt/python/libexec/bin $PATH

ध्यान दें:

  1. ऐसा करने से सिस्टम का डिफ़ॉल्ट संस्करण छाया रहेगा python
  2. होमब्रे को /usr/local/share/pythonपुराने संस्करणों में अजगर को जोड़ने के लिए इस्तेमाल किया गया था ।

यह मेरे लिए चाल थी। डिफ़ॉल्ट रूप से, काढ़ा python3आपके रास्ते में स्थापित होता है - एक निष्पादन नहीं कहा जाता है python.. विशेष रूप /usr/local/opt/python/libeexec/binसे मेरे पथ में छपी अन्य निर्देशिकाओं के आगे संदर्भित ।
कैम 8001

13

अपना $ PATH संशोधित करें, इसे अपने bashrc या bash_profile में जोड़ें:

export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH

यहाँ क्लिक करें: अंक # 89791


मेरे संपादक "PyCharm" ~ / .bashrc का उपयोग कर रहे थे और मैं इस छोटे से मणि तक काढ़ा के अजगर को काम करने में असमर्थ था। धन्यवाद @ एबेन
जेम्सडेर्ट

10

आपको यह सुनिश्चित करने के लिए अपने पैठ पर्यावरण चर को संपादित करने की आवश्यकता है कि होमब्रे पाइथन जहां भी स्थित है, उसे / usr / bin से पहले खोजा जाए। आप अपने शेल कॉन्फिग में चीजों को भी सेट कर सकते हैं, जैसे कि PYTHON का एक वैरिएबल आपके वांछित संस्करण के लिए सेट किया जाए और कमांड लाइन के $PYTHONबजाय कॉल करें python

इसके अलावा, जैसा कि एक और पोस्टर में कहा गया है (और विशेष रूप से मैक पर) अजगर के साथ गड़बड़ नहीं है / usr / बिन में यह एक और अजगर स्थापित करने के लिए इंगित करने के लिए। यदि आप ऐसा करते हैं तो आप केवल परेशानी पूछ रहे हैं।


9

मैंने किया brew install python, मेरी $PATHअच्छी थी, लेकिन फिर भी, which pythonमुझे सिस्टम स्थापित करने के लिए दिया। टर्मिनल को फिर से शुरू करके इसे ठीक कर दिया।


1
यह सब मुझे करने की जरूरत है। मुझे यकीन नहीं है कि यह कब करना है, हालांकि। ऐसा लगता है कि बस निष्पादित करें brew install pythonऔर फिर, टर्मिनल को पुनरारंभ करें, और कुछ नहीं? brew unlinkऔर की जरूरत नहीं brew link?
कोन एंटोनकोस

काढ़ा का उपयोग कर स्थापित अजगर के बाद, "कौन सा अजगर" मुझे सही स्थानीय अजगर पथ देता है, लेकिन "अजगर" कमांड ने संकेत दिया कि यह सिस्टम स्थापित था जो एक आह्वान कर रहा था। रिस्टार्ट टर्मिनल ने इसे ठीक कर दिया।
मिशेल

2
रिस्टार्ट टर्मिनल आवश्यक नहीं है, कोशिश करेंhash -r
जार्जक्सश

जेएफसी, मैं अपना दिमाग खो रहा था जब तक मैंने इसे नहीं पढ़ा। मैंने पहले ही brew unlink & brew linkकई बार किया। केवल टर्मिनल को फिर से शुरू करने की आवश्यकता है
डोमिनिक

6

pythonअब इंगित करता है python3, अगर आपको जरूरत है python 2तो करें: brew install python@2और फिर अपने .zshrc या .bashrc फ़ाइल में export PATH="/usr/local/opt/python@2/libexec/bin:$PATH" अभी, pyhon --version= पायथन 2.7.14 और python3 --version= पायथन 3.6.4। यह वह व्यवहार है जिसका उपयोग मैं अपने टर्मिनल में देखने के लिए करता हूं।


5

मेरा मानना ​​है कि होमब्रेव पायथन को डिफ़ॉल्ट बनाने के साधन हैं, लेकिन मेरी राय में किसी समस्या को हल करने का उचित तरीका सिस्टम पायथन पथ के साथ गड़बड़ नहीं है: एक वर्चुअनव्यू बनाना बेहतर है जिसमें होमब्रीव पायथन डिफ़ॉल्ट होगा (वर्चुअन का उपयोग करके - -python विकल्प)। उपकरण का उपयोग करना python_selectलगभग हमेशा एक बुरा विचार है।


2

पायथन के संस्करणों के बीच स्थापित और स्विच करने के बजाय पाइनेव का उपयोग करें। मैं वर्षों से rbenv का उपयोग कर रहा हूं जो एक ही काम करता है, लेकिन रूबी के लिए। इससे पहले यह नरक प्रबंधन संस्करण था।

स्थापना निर्देशों के लिए pyenv के github पृष्ठ से परामर्श करें । मूल रूप से यह इस प्रकार है: - होमब्रे का उपयोग करके पाइनेव स्थापित करें। brew install pyenv - अपने शेल स्टार्टअप स्क्रिप्ट के अंत में एक फ़ंक्शन जोड़ें ताकि pyenv यह जादू कर सके।echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

  • पाइथन का उपयोग करें हालांकि आपको अपनी ज़रूरत के कई अलग-अलग संस्करणों को स्थापित करने के लिए। pyenv install 3.7.7
  • डिफ़ॉल्ट (वैश्विक) संस्करण को आपके द्वारा इंस्टॉल किए गए आधुनिक संस्करण में सेट करें। pyenv global 3.7.7
  • यदि आप एक ऐसे प्रोजेक्ट पर काम करते हैं, जिसे अजगर के एक अलग संस्करण का उपयोग करने की आवश्यकता है, तो देखें pyevn local। यह आपके प्रोजेक्ट के फ़ोल्डर में एक फ़ाइल बनाता है जो अजगर संस्करण को निर्दिष्ट करता है। Pyenv उस फ़ाइल में संस्करण के साथ वैश्विक अजगर संस्करण को ओवरराइड करेगा।

1

बस करो:

brew install python
brew link python

ऐसा करने के बाद, इसे अपने bashrc या bash_profile में जोड़ें:

alias python='/usr/local/bin/python2'

का आनंद लें!


ऐसा लगता है कि आप उसी समस्या में भाग गए जो मैंने किया था। सभी लिंक काढ़ा, बनाता है कि यहां तक कि के साथ linkजवाब में आदेशों यहाँ, में /usr/local/binके लिए कर रहे हैं python2के बजाय python। इसके आसपास काम करने के लिए एक उपनाम का उपयोग करना एक बुरा विचार है, लेकिन मुझे अभी तक कुछ भी बेहतर नहीं मिला है।
पैट्रिक एम

उपनाम के बजाय, मैंने इसे कॉपी किया cp /usr/local/bin/python2 /usr/local/bin/pythonऔर यह अच्छी तरह से काम करने लगा। यह भी एक बदसूरत काम है?
राजाब 12

1

/usr/local/opt/python/libexec/binस्पष्ट रूप से अपने में जोड़ें .bash_profile:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

उसके बाद, यह सही ढंग से काम करना चाहिए।


1

यदि आप मछली के खोल हैं

echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish

0

आप संपादित कर सकते हैं / आदि / पथ। यह रहा मेरा:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

फिर अजगर संस्करण के लिए एक सिमलिंक जोड़ें। मेरे मामले में

$ cd /usr/local/bin
$ ln -s python3 python

देखा!


0

उच्च सिएरा के बाद से, आपको उपयोग करने की आवश्यकता है:

sudo chown -R $(whoami) $(brew --prefix)/*

ऐसा इसलिए है क्योंकि /usr/localअब इसे प्रसिद्ध नहीं किया जा सकता है


-7

डिफ़ॉल्ट पायथन के साथ आपके विचार का कोई मतलब नहीं है। मैं पायथन इंटरप्रेटर को एक अलग संस्करण के साथ बदलने के लिए इसे बुरा अभ्यास मानता हूं। सिस्टम कार्यक्षमता सिस्टम पायथन और विशिष्ट मॉड्यूल या विशिष्ट पायथन संस्करण पर किसी तरह निर्भर हो सकती है । इसके बजाय अपने कस्टम पायथन इंस्टॉलेशन को एक सुरक्षित अलग स्थान पर स्थापित करें और अपने $ PATH को समायोजित करें ताकि आपको डिफ़ॉल्ट पायथन की तलाश करने के बजाय एक पथ खोज के माध्यम से अजगर को कॉल करने की आवश्यकता हो ।


5
रास्ते में सिस्टम के अजगर से पहले आने वाले होमबॉर्न के अजगर होने का ओएस एक्स में कोई जोखिम नहीं है। यह बहुत आम है।
स्टीवन नोबल

3
साथ ही, गैर-एप्पल पायथन का उपयोग करने की आवश्यकता वास्तविक है। मैं matplotlib, NumPy और SciPy को पाने और 'डिफ़ॉल्ट' (उर्फ Apple) पायथन के साथ चलने की कोशिश कर रहा हूं। यह 32/64 बिट्स के इलाज के बारे में कुछ है जो बस एक्सटेंशन को अलग करता है। बहुत, बहुत, बहुत खुशी के बजाय एक अच्छा ब्रू है। और डिफ़ॉल्ट रूप से ('काढ़ा स्थापित अजगर') काढ़ा वास्तव में आप क्या मतलब है - यह एक अलग संरचना के लिए दूसरा पायथन स्थापित करता है, पथों को ओवरराइड नहीं कर रहा है (जो ठीक है इसलिए यह एसओ सवाल उठता है)।
एकुप्पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.