pip kurulumu /usr/local/opt/python/bin/python2.7: kötü yorumlayıcı: Böyle bir dosya veya dizin yok


94

Anlaşmanın ne olduğunu bilmiyorum ama hiçbir yere varamayan bazı yığın aşımı çözümlerini takip etmek zorunda kaldım. Lütfen bana bu konuda yardım eder misin?

  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

Yanıtlar:


171

2.7'yi OS X 10.10'a kurmak için home-brew kullandım ve yeni kurulumda sym linkleri yoktu. Koştum

brew link --overwrite python

belirtildiği gibi Homebrew python sembolik bir link nasıl? ve sorunu çözdü.


6
Bu beni kurtardı. FWIW, Python'umu El Capitan'da düzeltmek için üç adım atmam gerekiyordu: brew install python; brew linkapps python; brew link --overwrite python
Saish

bunun tersi nasıl yapılır?
bubakazouba

3
ters: pitonun bağlantısını kes
Anders B

1
Sadece buna eklemek için. Herhangi bir nedenle "xcode-select --install" komutunu çalıştırmam gerektiğini öğrendim. "brew yeniden yükleme python" bunu yapana kadar çalışmayacak. Benim özel durumumda, bir fiziksel bilgisayardan diğerine geçmek için geçiş asistanı kullandım. Bu iki şeyden sonra her şey çözüldü ve pip3 çalıştı.
chrisallick

2
Python zaten benim için doğru bir şekilde bağlantılıydı, yardımcı olan şey pip3 install --upgrade pip@Excalibur tarafından daha aşağıda bir yorumda belirtildiği gibi.
retrovertigo

58

Tahminimce biri kısmen kaldırılmış iki python kurulumunuz veya iki pip kurulumunuz var.

Neden kullanıyorsun sudo? İdeal olarak, root kullanmak yerine her şeyi kullanıcı hesabınızdan kurup çalıştırabilmelisiniz. Kök ve yerel hesabınızı karıştırırsanız, izin sorunlarıyla karşılaşmanız daha olasıdır (örneğin, "ana dizinin şu anki kullanıcıya ait olmadığı" hakkındaki uyarıya bakın).

Bunu çalıştırırsan ne elde edersin?

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

Bu size hangi python ikilisinin pipkullanmaya çalıştığını gösterecektir. İşaret ediyorsa /usr/local/opt/python/bin/python2.7, şunu çalıştırmayı deneyin:

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

Bu "Böyle bir dosya veya dizin yok" diyorsa, pip kaldırılmış bir python ikilisini kullanmaya çalışıyor demektir.

Sonra şunu deneyin:

$ which python
$ which python2.7

Aslında çalışan python ikilisinin yolunu görmek için.

Pip başarıyla bir yere kurulmuş gibi göründüğünden, bu /usr/local/bin/pip, .ppi üzerinde daha yüksek olan eski bir pip kurulumunun parçası olabilir PATH. Bunu test etmek için, çalışmayan pipikili dosyayı şu şekilde kaldırmayı deneyebilirsiniz (gerekli olabilir sudo):

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

Ardından pip --versionkomutunuzu tekrar çalıştırmayı deneyin . Umarım doğru sürümü alır ve başarıyla çalışır.


harika açıklamalar. Not: Bir projeyi mercurialden çıkarmak için kurulan bir dilin paket yöneticisinde hata ayıklamak zorunda kalmak, tüm bu bilgisayar şeylerine olan inancımı kaybetmeme neden oluyor. oops .. Ve şimdi yeni bir python hatası için "AttributeError yerel deposu"
nicolas

1
Bende de aynı sorun var, ancak bu talimatları uyguladıktan sonra bile bu benim için işe yaramadı. PIP hala yanlış bir yol kullanıyor. Bunu yapmanın başka bir yolu var mı?
Adam Starrh

5
Pip yüklemem gerekiyordu: sudo /usr/bin/easy_install pip- Burada
buldum

Sorun şu ki, yüklü olan tek pip sürümü
buysa

55

OSX ve varyantında tek çözüm.

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

1
Cevabı sorunsuz ve basit bir şekilde sunmaya çalıştım.
TheExorcist

Bunun python kullanan diğer programlar üzerinde yan etkileri olması muhtemeldir. Dahası, Python 2'nin kullanım ömrü 1 Ocak 2020'dir ve geliştiricileri, sonunda (veya bazı ortamlarda zaten) "python" un değiştiricisiz Python 3 python.org/dev/peps'e
kotoole

@kotoole Cevabınızdan, gözleriniz görebiliyor gibi görünüyor, ancak gözlemleyemiyorsanız, sadece python2.7'yi python3.x ile değiştirin, yine de aynı şekilde çalışacaktır.
TheExorcist

1
@TheExorcist maalesef hepimiz için Python2 ve Python3 farklı dillerdir. Bir dil için yazılan kod diğerinde çalıştırıldığında kırılır. Python'u python2.7 toptan satış ile değiştirmek, yolun sonundaki diğer uygulamaları bozma olasılığı yüksek görünüyor. Bu çözüm, anahtarlarınızı unuttuğunuz zaman ön kapınızı silmenizle aynı şekilde "çalışır". Sizi aşar, ancak eviniz böceklerle dolmaya başladığında ağlayarak gelmeyin.
kotoole

@kotoole ders dışı, haklısın, ama bazen şu anda yapmamız gerekeni yapmalıyız.
TheExorcist

34

Sabitleme pip

Bu hata için:

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

Bu sorunun kaynağı, pip içinde kodlanmış kötü bir python yoludur (bu, örneğin $ PATH'inizi değiştirerek düzeltilmeyeceği anlamına gelir). Bu yol artık pip'in en son sürümünde sabit kodlanmamaktadır, bu nedenle çalışması gereken bir çözüm şudur:

pip install --upgrade pip

Ama elbette bu komut pip kullanıyor, bu yüzden aynı hatayla başarısız oluyor.

Kendinizi bu karmaşadan kurtarmanın yolu:

  1. Çalıştırmak which pip
  2. Bu dosyayı bir metin düzenleyicide açın
  3. İlk satırı #!/usr/local/opt/python/bin/python2.7örneğin #!/usr/local/opt/python2/bin/python2.7(yoldaki python2'ye dikkat edin) veya makinenizdeki çalışan bir python yorumlayıcısının herhangi bir yolunu olarak değiştirin.
  4. Şimdi, pip install --upgrade pip(bu, hack'inizin üzerine yazar ve yorumlayıcı sorununun düzeltilmesi gereken en son sürümde pip çalışmasına neden olur)

Virtualenv düzeltiliyor

Benim için bu sorunu, önce virtualenv'den aynı sorunu yaşayarak buldum:

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

Buradaki çözüm koşmaktır

pip uninstall virtualenv
pip install virtualenv

Bu komutu çalıştırmak pip'ten aynı hatayı veriyorsa, yukarıya bakın.


1
Evet, Mac OSX'te Python 2.7 ve 3.6'ya sahip olduktan sonra 3.6'ya yükselttim, bu problemi yaşadım. Benim için çalışan çözüm pip3 install --upgrade pip
Excalibur

Hayır: pip Traceback (en son çağrı): Dosya "/ usr / local / bin / pip", satır 7, pip._internal import main'den <module> 'de ImportError: pip._internal
einarc

@Excalibur Kabul edilen cevabın altına çözümünüzü yorum olarak ekledim. Bunun için teşekkürler!
retrovertigo

26

Kurulumum için sudo kullanarak aynı hatayı yaptım. (oops)

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

Bu her şeyi normale döndürdü.


22
linkapps kullanımdan kaldırıldı
Steve

15

Mac OSX'e hem python 2 hem de 3 yüklediğim için her türlü hatayı yaşıyordum.

Python2.7 dosyamın (/usr/local/bin/python2.7) konumunu bulmak için hangisini kullandım

which python2.7

Sonra gerçek python2.7 kurulum konumumu betiğin beklediği yerle sembolize ettim:

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

2
Cankurtaran! Teşekkür ederim.
Brian Fegter

13

Benzer bir sorun yaşadım. Temelde pip yanlış bir yola (eski kurulum yolu) veya python'a bakıyordu. Aşağıdaki çözüm benim için çalıştı:

  • Python yolunun nerede olduğunu kontrol ettim (deneyin which python )
  • Pip dosyasındaki ilk satırı kontrol ettim ( /usr/local/bin/pip2.7ve /usr/local/bin/pip). Satır, python yolunun doğru yolunu belirtmelidir. Benim durumumda olmadı. Düzelttim ve şimdi iyi çalışıyor.

9

Herhangi birine yardımcı olması durumunda, bu diğer soruda bahsedilen çözüm, pip'i yükselttikten sonra bugün çalışmayı bıraktığında benim için işe yaradı: Yükseltmeden sonra pip kırıldı

Önceden önbelleğe alınmış bir konum değiştiğinde bu bir sorun gibi görünüyor, bu nedenle önbelleği şu komutla yenileyebilirsiniz:

hash -r

9

İşlemi basitleştirmek için, sürüm 2'yi yeniden yüklemek için aşağıdaki komutu kullanabiliriz:

brew install python@2

Sonra Mac'imde aşağıdaki gibi görünüyor:

▶ 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
Yeniden yüklemek için reinstallkomut var brew:brew reinstall python@2
Valeriy Van

5

Aynı sorunu yaşadım, virtualenv eski bir python yoluna işaret ediyordu. Yolu düzeltmek sorunu çözdü:

$ 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.

Bu işe yaradı. Ama uzun vadeli bir çözüm mü? Bu sorunu birkaç başka şeyle fark ettim, bu yüzden artık çalışmadığı her durumda değiştirilmesini gerektirecek ve bunun uzun vadeli etkileri konusunda endişeliyim.
Jake T.

Kesinlikle uzun vadeli bir çözüm değil. Benim durumumda, python ortamımla uğraştım, bu yüzden bu duruma girdiğini ve hızlı bir düzeltme aradığını düşünüyorum. Virtualenv'i kaldırıp işlevsel bir python2.7 pip ile yeniden yüklemenin bu çubuğu yapacağından şüpheleniyorum.
dg

4

Ben de aynı sorunu yaşadım. Hem Python 2.7 hem de 3.6 yükledim. Python 2.7 virtualenvçalışıyordu, ancak Python3'ü yükledikten sonra virtualenv 2.7 sürümünü aramaya devam etti ve bulamadı. Yapıyorpip install virtualenv virtualenv ait Python3 sürümünün yüklü.

Ardından, her komut için Python2 kullanmak istersem, virtualenv --python=python2.7 somecommand


2

Bende de aynı sorun var. Eğer koşarsam brew link --overwrite python2. Hâlâ vardı 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

Çözüldü! Artık python2 version kumaşı kullanabiliriz.

=== 2018/07/25 güncellendi

Os python'unuz python3'e bağlandığında python2 sürümünü fab kullanmanın rahat bir yolu vardır. .shemriniz için.

# 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

Bu yardımcı olur umarım.


2

Bu dosyanın ilk satırını düzenlemek benim için çalıştı:

MBP-de-Jose:~ josejunior$ which python3

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

MBP-de-Jose:~ josejunior$

önce

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

sonra

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

2

Tek yapmanız gereken ... bu sorunu çözmek için terminal penceresini kapatıp yenisini yeniden açmak.

Sorun, yeni python yolunun bashrc'ye eklenmemesidir (kaynak veya yeni terminal penceresi yardımcı olabilir).


1

Benim durumumda, homebrew python kurulumunu Mac'imde MacPorts aracılığıyla zaten yüklü olan diğer iki python sürümüne sahip olduğumdan Mac'imden kaldırmaya karar verdim. Bu, hata mesajına neden oldu.

Python'u brew aracılığıyla yeniden yüklemek sorunumu çözdü.



1

Benim için, centOS 7'de eski pip bağlantısını / bin'den kaldırmak zorunda kaldım.

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

sonra yeniden bağla

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

O zaman eğer

/usr/local/bin/pip2.7

Çalışıyor, bu çalışmalı


0

Python ve pip'in iki farklı sürümüne sahip olabilirsiniz.

Deneyin:

pip2 install --upgrade pip ve sonra pip2 install -r requirements.txt

Veya pip3daha yeni Python sürümündeyseniz.


0

TLDR: yolunuzda pip bulunan a bir sembolik bağlantıdır ve başvurulan konum artık yürütülebilir dosyayı içermez. Sembolik bağlantıyı güncellemeniz gerekiyor.

Birkaç şeyi anlamaya yardımcı olur.

  • Böyle bir şey yazdığınızda pythonveya pipişletim sistemi /etc/pathso komutla ilişkili yürütülebilir dosyayı bulmaya çalışacaktır. Kullanarak oradaki her şeyi görebilirsinizcat /etc/paths .
  • Kabuğunuzun kullanacağı yürütülebilir dosyanın konumunu belirlemek için kullanışlı bir komut var which, which pythonveya yazabilirsiniz which pip. Bu size kabuğunuzun o komut için kullanacağı yürütülebilir dosyanın konumunu söyleyecektir.
  • Bu kısım anahtardır . Konum gerçek bir çalıştırılabilir olabilir veya olmayabilir, sembolik bir bağlantı (sembolik bağlantı) olabilir.
  • Onun ortak /etc/pathsiçermesi /usr/local/bin, onun aynı zamanda ortak /usr/local/binfiili yürütülebilir sembolik bağı bir demet olmak. Yürütülebilir dosyaların kendileri değil.
  • Sembolik bağlantı referanslı konumda çalıştırılabilir dosya yoksa, aşağıdaki gibi bir hata alırsınız: bad interpreter: No such file or directory

Bununla birlikte, sorun muhtemelen pipbir sembolik bağlantıdır ve bağlantılı yürütülebilir dosya muhtemelen o konumda artık mevcut değildir. Düzeltmek için aşağıdakileri yapın

  1. Yürütülebilir dosyanın konumunu bulun - which pip(şöyle bir şey verir/usr/local/bin/pip )
  2. Sembolik bağlantı referans konumunu kontrol edin ls -l /usr/local/bin/pip | grep pip(buna benzer bir şey verin pip -> /usr/local/opt/python@3.7/bin/pip3)
  3. Yürütülebilir dosyanın başvurulan konumda olup olmadığını kontrol edin ls /usr/local/opt/python@3.7/bin/pip3(bu sorunu yaşıyorsunuz, bu yüzden muhtemelen değil).
  4. Eski sembolik bağlantıyı kaldır rm -r /usr/local/bin/pip
  5. Kullanılacaksa gerçek pipyürütülebilir dosyayı bulun, homebrewonu bulmak /usr/local/optgibi bir şey kullanabilirsiniz ls /usr/local/opt/ | grep python.
  6. Yürütülebilir pip için doğru sembolik bağlantıyı ekleyin. ln -s /usr/local/opt/python@3.7/bin/pip3 /usr/local/bin/pip
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.