पाइप स्थापना /usr/local/opt/python/bin/python2.7: खराब दुभाषिया: कोई फ़ाइल या निर्देशिका नहीं


94

मुझे नहीं पता कि यह सौदा क्या है लेकिन मैं कुछ स्टैकओवरफ़्लो समाधानों का पालन कर रहा हूं जो कहीं नहीं मिलते हैं। क्या आप कृपया इस पर मेरी मदद कर सकते हैं?

  Monas-MacBook-Pro:CS764 mona$ sudo python get-pip.py
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    /tmp/tmpbSjX8k/pip.zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
    Collecting pip
      Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB)
        100% |████████████████████████████████| 1.1MB 181kB/s 
    Installing collected packages: pip
      Found existing installation: pip 1.4.1
        Uninstalling pip-1.4.1:
          Successfully uninstalled pip-1.4.1
    Successfully installed pip-7.1.0
    Monas-MacBook-Pro:CS764 mona$ pip --version
    -bash: /usr/local/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

जवाबों:


171

मैंने OS X 10.10 पर 2.7 को स्थापित करने के लिए होम-ब्रूफ़ का उपयोग किया था और नए इंस्टॉलेशन में सिम लिंक गायब थे। मैं भागा

brew link --overwrite python

के रूप में उल्लेख कैसे Homebrew में अजगर सहानुभूति करने के लिए? और इसने समस्या को हल कर दिया।


6
जिसने मुझे बचा लिया। एफडब्ल्यूआईडब्ल्यू, मुझे एल कैपिटान पर अपने पायथन को ठीक करने के लिए तीन चरणों को करना था: ब्राइट इंस्टॉल पायथन; काढ़ा लिंक पाइथन; काढ़ा लिंक --overy अजगर
Saish

इसके विपरीत कैसे करें?
बुबकज़ौबा

3
उल्टा: काढ़ा अजवायन के फूल
Anders B

1
बस इससे जोड़ना है। मैंने पाया कि मुझे किसी भी कारण से "xcode-select --install" चलाना पड़ा। "काढ़ा पुनर्स्थापना अजगर" तब तक काम नहीं करेगा जब तक कि मैंने ऐसा नहीं किया। अपने विशेष उदाहरण में, मैंने एक भौतिक कंप्यूटर से दूसरे में जाने के लिए माइग्रेशन सहायक का उपयोग किया। उन दो चीजों के बाद, सब कुछ हल हो गया और pip3 ने काम किया।
क्रिसिलिक

2
पायथन पहले से ही मेरे लिए सही ढंग से जुड़ा हुआ था, जो pip3 install --upgrade pip@ मदद के रूप में @Excalibur द्वारा नीचे टिप्पणी की गई थी।
रेट्रोवर्टिगो

58

मुझे लगता है कि आपके पास दो अजगर स्थापित हैं, या दो पाइप स्थापित हैं, जिनमें से एक को आंशिक रूप से हटा दिया गया है।

आप क्यों इस्तेमाल करते हैं sudo? आदर्श रूप से आपको रूट का उपयोग करने के बजाय अपने उपयोगकर्ता खाते से सब कुछ स्थापित और चलाने में सक्षम होना चाहिए। यदि आप रूट और अपने स्थानीय खाते को एक साथ मिलाते हैं, तो आप अनुमतियों के मुद्दों में भाग लेने की अधिक संभावना रखते हैं (उदाहरण के लिए यह "माता-पिता निर्देशिका वर्तमान उपयोगकर्ता के स्वामित्व में नहीं है" के बारे में चेतावनी देता है देखें)।

इसे चलाने पर आपको क्या मिलेगा?

$ head -n1 /usr/local/bin/pip

यह आपको दिखाएगा कि कौन सा अजगर बाइनरी pipउपयोग करने की कोशिश कर रहा है। यदि यह इंगित कर रहा है /usr/local/opt/python/bin/python2.7, तो इसे चलाने का प्रयास करें:

$ ls -al /usr/local/opt/python/bin/python2.7

यदि यह "ऐसी कोई फ़ाइल या निर्देशिका नहीं" कहता है, तो पाइप एक अजगर बाइनरी का उपयोग करने की कोशिश कर रहा है जिसे हटा दिया गया है।

अगला, यह प्रयास करें:

$ which python
$ which python2.7

अजगर बाइनरी का मार्ग देखने के लिए जो वास्तव में काम कर रहा है।

चूंकि ऐसा लगता है कि पाइप को कहीं स्थापित किया गया था, इसलिए यह /usr/local/bin/pipपाइप की पुरानी स्थापना का एक हिस्सा हो सकता है जो कि ऊपर है PATH। यह जांचने के लिए, आप इस तरह से गैर-कामकाजी pipबाइनरी को आगे बढ़ने की कोशिश कर सकते हैं (आवश्यकता हो सकती है sudo):

$ mv /usr/local/bin/pip /usr/local/bin/pip.old

फिर अपने pip --versionआदेश को फिर से चलाने का प्रयास करें। उम्मीद है कि यह सही संस्करण उठाता है और सफलतापूर्वक चलता है।


महान स्पष्टीकरण। सिडेनोट: किसी प्रोजेक्ट को मर्क्यूरियल से बाहर करने के लिए स्थापित भाषा के पैकेज मैनेजर को डिबग करना, जो मुझे उन सभी कंप्यूटर चीज़ों में ढीले विश्वास का कारण बनाता है। उफ़ .. और अब एक नई अजगर त्रुटि के लिए "एट्रीब्यूट स्थानीय भण्डार"
निकोलस

1
मेरे पास एक ही समस्या है, लेकिन इन निर्देशों का पालन करने के बाद भी मेरे लिए यह काम नहीं किया। PIP अभी भी गलत पथ का उपयोग कर रहा है। क्या इस बारे में जाने का कोई और तरीका है?
एडम स्टार्र

5
मुझे पाइप स्थापित करना था: sudo /usr/bin/easy_install pip- यह यहाँ मिला: stackoverflow.com/questions/27308234/…
एडम स्टारर

समस्या यह है कि अगर पाइप का एकमात्र संस्करण स्थापित है तो आप भाग्य से बाहर हैं
einarc

55

केवल OSX और इसके वैरिएंट में समाधान।

ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7

1
सहज और सरल तरीके से जवाब पेश करने की कोशिश की।
एक्सोरसिस्ट

यह अजगर का उपयोग कर अन्य कार्यक्रमों पर दुष्प्रभाव होने की संभावना है। इसके अलावा, अजगर 2 के लिए जीवन का अंत 1 जनवरी, 2020 है, और इसके देवों ने संकेत दिया है कि अंततः (या कुछ वातावरण में, पहले से ही) बिना किसी संशोधक के "अजगर" को अजगर 3 python.org/dev/peps का
-०३

@kotoole आपके उत्तर से ऐसा लगता है कि आपकी आँखें देख सकती हैं, लेकिन निरीक्षण करने में विफल रहती हैं, बस python2.7 को python3.x से बदल दें यह अभी भी समान काम करेगा।
एक्सोरसिस्ट

1
@ हम सभी के लिए दुर्भाग्य से, पायथन 2 और पायथन 3 अलग-अलग भाषाएं हैं। एक भाषा के लिए लिखा गया कोड दूसरे में चलने पर टूट जाएगा। अजगर को अजगर के साथ बदलने से थोक में सड़क के नीचे अन्य अनुप्रयोगों के टूटने की बहुत संभावना है। यह समाधान आपके सामने के दरवाजे को हटाने के उसी तरह "काम करता है" जब आप अपनी चाबी भूल जाते हैं। यह आपके माध्यम से हो जाता है, लेकिन रोना नहीं आता है जब आपका घर कीड़े से भरना शुरू कर देता है।
1927

@kotoole ऑफकोर्स, आप सही हैं, लेकिन कभी-कभी हम वह करते हैं जो हमें इस समय करने की आवश्यकता है।
TheExorcist

34

फिक्सिंग पाइप

इस त्रुटि के लिए:

~/Library/Python/2.7/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

इस समस्या का स्रोत एक खराब अजगर पथ है जिसे पाइप में हार्डकोड किया गया है (जिसका अर्थ है कि यह आपके पैट को बदलते हुए तय नहीं किया जाएगा)। वह रास्ता अब पाइप के सबसे अंतिम संस्करण में हार्डकोड नहीं है, इसलिए एक समाधान जो काम करना चाहिए वह है:

pip install --upgrade pip

लेकिन निश्चित रूप से, यह कमांड पाइप का उपयोग करता है, इसलिए यह उसी त्रुटि के साथ विफल हो जाता है।

इस गड़बड़ से खुद को बाहर निकालने का तरीका:

  1. Daud which pip
  2. उस फ़ाइल को टेक्स्ट एडिटर में खोलें
  3. पहली पंक्ति #!/usr/local/opt/python/bin/python2.7को उदाहरण के लिए बदलें #!/usr/local/opt/python2/bin/python2.7(पथ में python2 पर ध्यान दें), या अपनी मशीन पर काम करने वाले अजगर दुभाषिया के लिए कोई भी पथ।
  4. अब, pip install --upgrade pip(यह आपकी हैक को ओवरराइट करता है और नवीनतम संस्करण पर पाइप काम करता है, जहां दुभाषिया मुद्दा तय किया जाना चाहिए)

Virtualenv को ठीक करना

मेरे लिए, मैंने इस मुद्दे को पहले virtualenv से समान अंक प्राप्त किया:

~/Library/Python/2.7/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

इसका हल यहां चलाना है

pip uninstall virtualenv
pip install virtualenv

यदि उस कमांड को चलाने से पाइप से एक ही त्रुटि मिलती है, तो ऊपर देखें।


1
हाँ, मैक OSX पर पायथन 2.7 और 3.6 था, फिर 3.6 में अपग्रेड करना, मुझे यह समस्या थी। यह समाधान है कि मुझे (के लिए काम किया था pip3 install --upgrade pip)
एक्सकैलिबर

नोप: पाइप ट्रेसबैक (सबसे हालिया कॉल अंतिम): फाइल "/ usr / लोकल / बिन / पाइप", लाइन 7, में <मॉड्यूल> पाइप से। in। अनन्त आयात मुख्य ImportError: pip
_internal

@Excalibur मैंने स्वीकृत उत्तर के तहत एक टिप्पणी के रूप में अपना समाधान जोड़ा। उसके लिए धन्यवाद!
रेट्रोवर्टिगो

26

मैंने अपनी स्थापना के लिए sudo का उपयोग करते हुए एक ही त्रुटि की। (उफ़)

brew install python
brew linkapps python
brew link --overwrite python 

इससे सबकुछ सामान्य हो गया।


22
लिंकअप्स को पदावनत किया गया है
स्टीव

15

क्योंकि मेरे पास मैक ओएसएक्स 2 पर अजगर 2 और 3 दोनों स्थापित थे, मुझे सभी प्रकार की त्रुटियां हो रही थीं।

मैंने अपनी python2.7 फ़ाइल (/usr/local/bin/python2.7) का स्थान खोजने के लिए उपयोग किया

which python2.7

फिर मैंने अपने वास्तविक python2.7 को स्क्रिप्ट की अपेक्षित स्क्रिप्ट के साथ स्थापित किया;

ln -s /usr/local/bin/python2.7 /usr/local/opt/python/bin/python2.7

2
Lifesaver! धन्यवाद।
ब्रायन फीगर

13

मेरा भी ऐसा ही मुद्दा था। मूल रूप से पाइप एक गलत पथ (पुराने स्थापना पथ) या अजगर में दिख रहा था। निम्नलिखित समाधान ने मेरे लिए काम किया:

  • मैंने जाँच की कि अजगर पथ कहाँ है (कोशिश करें which python)
  • मैंने पाइप फ़ाइल ( /usr/local/bin/pip2.7और /usr/local/bin/pip) पर पहली पंक्ति की जाँच की । लाइन को सही तरीके से अजगर पथ के लिए बताना चाहिए। मेरे मामले में, नहीं। मैंने इसे ठीक किया और अब यह ठीक काम करता है।

9

मामले में यह किसी की मदद करता है, इस अन्य प्रश्न में वर्णित समाधान ने मेरे लिए काम किया जब पाइप ने इसे अपग्रेड करने के बाद आज काम करना बंद कर दिया: उन्नयन के बाद पाइप टूट गया

ऐसा लगता है कि यह एक समस्या है जब एक पूर्व कैश्ड स्थान बदलता है, तो आप इस आदेश के साथ कैश को ताज़ा कर सकते हैं:

hash -r

9

ऑपरेशन को सरल बनाने के लिए, हम संस्करण 2 को पुनर्स्थापित करने के लिए नीचे दिए गए कमांड का उपयोग कर सकते हैं:

brew install python@2

फिर मेरे मैक पर, यह नीचे के रूप में दिखता है:

▶ python -V
Python 2.7.10

▶ python2 -V
Python 2.7.14

▶ python3 -V
Python 3.6.5

▶ pip2 -V
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

▶ pip3 -V
pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)

▶ pip --version
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

1
पुन: स्थापित करने के लिए इसमें reinstallकमांड है brew:brew reinstall python@2
Valeriy Van

5

मेरे पास एक ही मुद्दा था, virtualenv एक पुराने अजगर पथ की ओर इशारा कर रहा था। पथ को ठीक करने से समस्या हल हो गई:

$ virtualenv -p python2.7 env
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

$ which python2.7
/opt/local/bin/python2.7

# needed to change to correct python path
$ head  /usr/local/bin/virtualenv
#!/usr/local/opt/python/bin/python2.7 <<<< REMOVED THIS LINE
#!/opt/local/bin/python2.7 <<<<< REPLACED WITH CORRECT PATH

# now it works:
$ virtualenv -p python2.7 env
Running virtualenv with interpreter /opt/local/bin/python2.7
New python executable in env/bin/python
Installing setuptools, pip...done.

यह काम किया। लेकिन क्या यह लॉन्ग टर्म फिक्स है? मैं इस मुद्दे को कुछ अन्य बातों के साथ नोटिस करता हूं, इसलिए इसे प्रत्येक उदाहरण के लिए इसे बदलने की आवश्यकता होगी जो अब काम नहीं करता है, और मुझे इस के दीर्घकालिक प्रभावों के बारे में चिंता है।
जेक टी।

निश्चित रूप से दीर्घकालिक फिक्स नहीं। मेरे मामले में मैंने अपने अजगर के वातावरण के साथ चारों ओर चक्कर लगाया था यही कारण है कि मुझे लगता है कि यह इस स्थिति में आ गया और एक त्वरित समाधान की तलाश की। मुझे संदेह है कि virtualenv को अनइंस्टॉल करने के बाद एक कार्यात्मक python2.7 पाइप के साथ इसे फिर से स्थापित करना होगा।
dg

4

मेरी भी यही समस्या थी। मेरे पास पायथन 2.7 और 3.6 दोनों स्थापित हैं। Python 2.7 ने virtualenvकाम किया था , लेकिन Python3 को स्थापित करने के बाद, virtualenv 2.7 संस्करण की तलाश में रहा और इसे खोज नहीं सका। ऐसा करने pip install virtualenvvirtualenv का python3 संस्करण स्थापित।

फिर, प्रत्येक कमांड के लिए, यदि मैं Python2 का उपयोग करना चाहता हूं, तो मैं उपयोग करूंगा virtualenv --python=python2.7 somecommand


2

मुझे वही समस्या हुई। अगर मैं दौड़ता हूँ brew link --overwrite python2। अभी भी था zsh: /usr/local/bin//fab: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory

cd /usr/local/opt/
mv python2 python

उसे हल कर लिया! अब हम python2 संस्करण कपड़े का उपयोग कर सकते हैं।

=== 2018/07/25 अपडेट किया गया

Python2 संस्करण फेब का उपयोग करने का एक निश्चित तरीका है जब आपका os python python3 से जुड़ा होता है। .shआपकी आज्ञा के लिए।

# fab python2
cd /usr/local/opt
rm python
ln -s python2 python

# use the fab cli
...

# link to python3
cd /usr/local/opt
rm python
ln -s python3 python

उम्मीद है की यह मदद करेगा।


2

इस फ़ाइल की पहली पंक्ति का संपादन मेरे लिए काम आया:

MBP-de-Jose:~ josejunior$ which python3

/usr/local/Cellar/python/3.7.3/bin/python3

MBP-de-Jose:~ josejunior$

इससे पहले

#!/usr/local/opt/python/bin/python3.7

उपरांत

#!/usr/local/Cellar/python/3.7.3/bin/python3

2

आपको बस इतना करना है ... टर्मिनल विंडो को बंद करें और इस मुद्दे को ठीक करने के लिए नए को फिर से खोलें।

मुद्दा यह है, नया अजगर पथ bashrc में नहीं जोड़ा गया है (या तो स्रोत या नई टर्मिनल विंडो मदद करेगी)।


1

मेरे मामले में, मैंने अपने मैक से होमब्रेव अजगर स्थापना को हटाने का फैसला किया क्योंकि मेरे पास मैकपोर्ट के माध्यम से मेरे मैक पर पहले से ही स्थापित अजगर के दो अन्य संस्करण थे। यह त्रुटि संदेश का कारण बना।

काढ़ा के माध्यम से अजगर की स्थापना रद्द करने से मेरी समस्या हल हो गई।


1
sudo /usr/bin/easy_install pip

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


1

मेरे लिए, सेंट 7 पर मुझे पुराने पाइप लिंक को / बिन से हटाना था

rm /bin/pip2.7 
rm /bin/pip

फिर इसके साथ relink करें

sudo ln -s  /usr/local/bin/pip2.7 /bin/pip2.7

तो अगर

/usr/local/bin/pip2.7

काम करता है, यह काम करना चाहिए


0

आपके पास पायथन और पाइप के दो अलग-अलग संस्करण हो सकते हैं।

की कोशिश:

pip2 install --upgrade pip और फिर pip2 install -r requirements.txt

या pip3यदि आप नए पायथन संस्करण पर हैं।


0

TLDR: pip आपके रास्ते में पाया जाने वाला एक सिम्कलिन है और संदर्भित स्थान अब निष्पादन योग्य नहीं है। आपको सिमलिंक को अपडेट करना होगा।

यह कुछ चीजों को समझने में मदद करता है।

  • जब आप कुछ ऐसा टाइप करते हैं pythonया pipआप ओएस /etc/pathsउस कमांड के लिए संबंधित निष्पादन योग्य खोजने की कोशिश करेंगे । आप वहां सब कुछ का उपयोग करके देख सकते हैं cat /etc/paths
  • निष्पादन योग्य का स्थान निर्धारित करने के लिए कि आपका शेल उपयोग करेगा एक आसान कमांड है which, आप टाइप कर सकते हैं which pythonया which pip। यह आपको निष्पादन योग्य का स्थान बताएगा जो आपका शेल उस कमांड के लिए उपयोग करेगा।
  • यह हिस्सा महत्वपूर्ण है । स्थान वास्तविक निष्पादन योग्य हो सकता है या नहीं भी हो सकता है, यह एक प्रतीकात्मक लिंक (सिमिलिंक) हो सकता है।
  • के लिए अपने आम /etc/pathsको रोकने के लिए /usr/local/bin, के लिए अपने भी आम /usr/local/binवास्तविक निष्पादनयोग्य के लिए सिमलिंक का एक समूह होने के लिए। अपने आप पर अमल नहीं।
  • यदि सिमिलिंक संदर्भित स्थान पर निष्पादन योग्य नहीं है, तो आपको एक त्रुटि मिलेगी bad interpreter: No such file or directory

इसके साथ ही कहा जा रहा है कि समस्या की संभावना है कि pipयह एक सहिष्णुता है और जुड़ा निष्पादन योग्य शायद उस स्थान पर मौजूद नहीं है। इसे ठीक करने के लिए निम्न कार्य करें

  1. निष्पादन योग्य का स्थान ढूंढें - which pip(कुछ इस तरह देता है /usr/local/bin/pip)
  2. सिमलिंक संदर्भ स्थान जांचें ls -l /usr/local/bin/pip | grep pip(कुछ इस तरह दें pip -> /usr/local/opt/python@3.7/bin/pip3)
  3. देखें कि क्या निष्पादन योग्य संदर्भित स्थान पर मौजूद है ls /usr/local/opt/python@3.7/bin/pip3(आप इस समस्या को ले रहे हैं तो यह संभव नहीं है)।
  4. पुराने सिम्लिंक को हटा दें rm -r /usr/local/bin/pip
  5. वास्तविक pipनिष्पादन योग्य खोजें यदि homebrewइसका उपयोग किया जाता है /usr/local/optतो आप ls /usr/local/opt/ | grep pythonइसे खोजने के लिए कुछ का उपयोग कर सकते हैं ।
  6. पाइप निष्पादन योग्य के लिए सही सिमिलिंक जोड़ें। ln -s /usr/local/opt/python@3.7/bin/pip3 /usr/local/bin/pip
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.