instalasi pip /usr/local/opt/python/bin/python2.7: interpreter buruk: Tidak ada file atau direktori seperti itu

90

Saya tidak tahu apa masalahnya tetapi saya terjebak mengikuti beberapa solusi stackoverflow yang tidak berhasil. Bisakah Anda membantu saya dalam hal ini?

  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
Mona Jalal
sumber

Jawaban:

168

Saya telah menggunakan home-brew untuk menginstal 2.7 pada OS X 10.10 dan penginstalan baru kehilangan tautan sym. Aku lari

brew link --overwrite python

seperti yang disebutkan dalam Bagaimana cara menyambungkan python di Homebrew? dan itu memecahkan masalah.

LancDec
sumber
6
Itu menyelamatkan saya. FWIW, saya harus melakukan tiga langkah untuk memperbaiki Python saya di El Capitan: brew install python; membuat linkapps python; membuat tautan - timpa python
Saish
bagaimana melakukan kebalikan dari itu?
bubakazouba
3
kebalikan: brew unlink python
Anders B
1
Hanya untuk menambahkan ini. Saya menemukan bahwa saya harus menjalankan "xcode-select --install" untuk alasan apa pun. "brew reinstall python" tidak akan berfungsi sampai saya melakukannya. Dalam contoh khusus saya, saya menggunakan asisten migrasi untuk berpindah dari satu komputer fisik ke komputer lainnya. Setelah dua hal tersebut, semuanya diselesaikan dan pip3 berfungsi.
chrisallick
Python sudah ditautkan dengan benar untuk saya, yang membantu pip3 install --upgrade pipseperti yang ditunjukkan oleh @Excalibur dalam komentar di bagian bawah.
retrovertigo
56

Saya menduga Anda memiliki dua instalasi python, atau dua instalasi pip, salah satunya telah dihapus sebagian.

Mengapa Anda menggunakan sudo? Idealnya Anda harus dapat menginstal dan menjalankan semuanya dari akun pengguna Anda daripada menggunakan root. Jika Anda menggabungkan root dan akun lokal Anda bersama-sama, kemungkinan besar Anda akan mengalami masalah perizinan (misalnya, lihat peringatan yang diberikan tentang "direktori induk tidak dimiliki oleh pengguna saat ini").

Apa yang Anda dapatkan jika menjalankan ini?

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

Ini akan menunjukkan kepada Anda biner python mana yang pipcoba digunakan. Jika menunjuk /usr/local/opt/python/bin/python2.7, coba jalankan ini:

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

Jika ini bertuliskan "Tidak ada file atau direktori seperti itu", maka pip mencoba menggunakan biner python yang telah dihapus.

Selanjutnya, coba ini:

$ which python
$ which python2.7

Untuk melihat jalur biner python yang benar-benar berfungsi.

Karena sepertinya pip berhasil dipasang di suatu tempat, bisa jadi itu /usr/local/bin/pipadalah bagian dari pemasangan pip lama yang lebih tinggi di PATH. Untuk mengujinya, Anda dapat mencoba memindahkan pipbiner yang tidak berfungsi keluar seperti ini (mungkin memerlukan sudo):

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

Kemudian coba jalankan pip --versionperintah Anda lagi. Mudah-mudahan ini mengambil versi yang benar dan berjalan dengan sukses.

Steven Kryskalla
sumber
penjelasan yang bagus. Catatan: harus men-debug manajer paket dari bahasa yang diinstal untuk mendapatkan proyek dari lincah adalah apa yang membuat saya kehilangan kepercayaan pada semua hal komputer itu. Ups .. Dan sekarang untuk kesalahan python baru "AttributeError local repository"
nicolas
1
Saya memiliki masalah yang sama, tetapi ini tidak berhasil untuk saya, bahkan setelah mengikuti petunjuk ini. PIP masih menggunakan jalur yang salah. Apakah ada cara lain untuk melakukannya?
Adam Starrh
5
Saya harus menginstal pip: sudo /usr/bin/easy_install pip- Ditemukan di sini: stackoverflow.com/questions/27308234/…
Adam Starrh
Masalahnya adalah jika itu satu-satunya versi pip yang diinstal maka Anda kurang beruntung
einarc
55

Hanya solusi di OSX dan variannya.

ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7
Pengusir setan
sumber
1
Mencoba menyajikan jawaban dengan cara yang mulus dan sederhana.
TheExorcist
Ini mungkin memiliki efek samping pada program lain yang menggunakan python. Selain itu, akhir masa pakai Python 2 adalah 1 Januari 2020, dan pengembangnya telah menunjukkan bahwa pada akhirnya (atau di beberapa lingkungan, sudah) "python" tanpa pengubah harus merujuk ke Python 3 python.org/dev/peps / pep-
0394
@kotoole Dari jawaban Anda sepertinya mata Anda bisa melihat, tetapi gagal mengamati, cukup ganti python2.7 dengan python3.x itu akan tetap berfungsi sama.
TheExorcist
1
@TheExorcist sayangnya bagi kita semua, Python2 dan Python3 adalah bahasa yang berbeda. Kode yang ditulis untuk satu bahasa akan rusak saat dijalankan di bahasa lain. Mengganti python dengan python2.7 wholesale tampaknya sangat mungkin merusak aplikasi lain di masa mendatang. Solusi ini "bekerja" dengan cara yang sama seperti menghapus pintu depan Anda ketika Anda lupa kunci Anda. Itu membuat Anda bisa melewatinya, tetapi jangan menangis ketika rumah Anda mulai dipenuhi serangga.
kotoole
@kotoole offcourse, Anda benar, tetapi terkadang kami harus melakukan apa yang perlu kami lakukan saat ini.
TheExorcist
32

Memperbaiki pip

Untuk kesalahan ini:

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

Sumber dari masalah ini adalah jalur python yang buruk yang di-hardcode dalam pip (yang berarti itu tidak akan diperbaiki dengan misalnya mengubah $ PATH Anda). Jalur tersebut tidak lagi di-hardcode dalam versi pip terbaru, jadi solusi yang seharusnya berfungsi adalah:

pip install --upgrade pip

Tapi tentu saja, perintah ini menggunakan pip, jadi gagal dengan kesalahan yang sama.

Cara untuk melepaskan diri dari kekacauan ini:

  1. Lari which pip
  2. Buka file itu di editor teks
  3. Ubah baris pertama dari #!/usr/local/opt/python/bin/python2.7menjadi misalnya #!/usr/local/opt/python2/bin/python2.7(perhatikan python2 di jalur), atau jalur apa pun ke juru bahasa python yang berfungsi di mesin Anda.
  4. Sekarang, pip install --upgrade pip(ini menimpa retasan Anda dan membuat pip berfungsi pada versi terbaru, di mana masalah penerjemah harus diperbaiki)

Memperbaiki virtualenv

Bagi saya, saya menemukan masalah ini dengan terlebih dahulu memiliki masalah yang sama dari virtualenv:

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

Solusinya di sini adalah menjalankan

pip uninstall virtualenv
pip install virtualenv

Jika menjalankan perintah itu memberikan kesalahan yang sama dari pip, lihat di atas.

kotoole
sumber
1
Yup, setelah memiliki Python 2.7 dan 3.6 di Mac OSX, lalu mengupgrade ke 3.6, saya mengalami masalah ini. Ini adalah solusi yang berhasil untuk saya ( pip3 install --upgrade pip)
Excalibur
Nope: pip Traceback (panggilan terakhir terakhir): File "/ usr / local / bin / pip", baris 7, di <module> dari pip._internal import main ImportError: Tidak ada modul bernama pip._internal
einarc
@Excalibur Saya menambahkan solusi Anda sebagai komentar di bawah jawaban yang diterima. Terima kasih untuk itu!
retrovertigo
26

Saya membuat kesalahan yang sama menggunakan sudo untuk instalasi saya. (Ups)

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

Ini membuat semuanya kembali normal.

DaveSaunders
sumber
21
linkapps tidak digunakan lagi
Steve
15

Karena saya menginstal python 2 dan 3 di Mac OSX, saya mengalami segala macam kesalahan.

Saya menggunakan yang untuk menemukan lokasi file python2.7 saya (/usr/local/bin/python2.7)

which python2.7

Kemudian saya menghubungkan lokasi instalasi python2.7 saya yang sebenarnya dengan yang diharapkan skrip:

ln -s /usr/local/bin/python2.7 /usr/local/opt/python/bin/python2.7
Simon Briggs
sumber
2
Penyelamat! Terima kasih.
Brian Fegter
12

Saya memiliki masalah serupa. Pada dasarnya pip mencari di jalur yang salah (jalur instalasi lama) atau python. Solusi berikut berhasil untuk saya:

  • Saya memeriksa di mana jalur python (coba which python)
  • Saya memeriksa baris pertama pada file pip ( /usr/local/bin/pip2.7dan /usr/local/bin/pip). Baris harus menyatakan jalur yang benar ke jalur python. Dalam kasus saya, tidak. Saya memperbaikinya dan sekarang berfungsi dengan baik.
sahar
sumber
9

Jika itu membantu siapa pun, solusi yang disebutkan dalam pertanyaan lain ini berfungsi untuk saya ketika pip berhenti berfungsi hari ini setelah memutakhirkannya: Pip rusak setelah meningkatkan

Tampaknya ini adalah masalah ketika lokasi yang sebelumnya di-cache berubah, jadi Anda dapat menyegarkan cache dengan perintah ini:

hash -r
Yordania
sumber
9

Untuk menyederhanakan pengoperasian, kita dapat menggunakan perintah di bawah ini untuk menginstal ulang versi 2:

brew install python@2

Kemudian di mac saya, tampilannya seperti di bawah ini:

▶ 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)
feuyeux
sumber
1
Untuk menginstal ulang ada reinstallperintah di brew:brew reinstall python@2
Valeriy Van
4

Saya memiliki masalah yang sama. Saya telah menginstal Python 2.7 & 3.6. Python 2.7 telah virtualenvberfungsi, tetapi setelah menginstal Python3, virtualenv terus mencari versi 2.7 dan tidak dapat menemukannya. Melakukan pip install virtualenvpenginstalan versi virtualenv Python3.

Kemudian, untuk setiap perintah, jika saya ingin menggunakan Python2, saya akan menggunakan virtualenv --python=python2.7 somecommand

yabrol
sumber
4

Saya memiliki masalah yang sama, virtualenv menunjuk ke jalur python lama. Memperbaiki jalur menyelesaikan masalah:

$ 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.
dg
sumber
Ini berhasil. Tapi apakah ini perbaikan jangka panjang? Saya memperhatikan masalah ini dengan beberapa hal lain, jadi ini akan membutuhkan perubahan untuk setiap contoh itu tidak lagi berfungsi, dan saya prihatin tentang efek jangka panjang dari ini.
Jake T.
Jelas bukan perbaikan jangka panjang. Dalam kasus saya, saya telah mengacaukan lingkungan python saya, itulah sebabnya saya pikir itu masuk ke situasi ini dan mencari perbaikan cepat. Saya menduga menghapus virtualenv kemudian menginstal ulang dengan pip python2.7 fungsional akan membuat tongkat ini.
dg
2

Saya punya masalah yang sama. Jika saya lari brew link --overwrite python2. Masih ada 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

Pecahkan itu! Sekarang kita bisa menggunakan fabric versi python2.

=== 2018/07/25 diperbarui

Ada cara yang mudah untuk menggunakan python2 versi fab ketika os python Anda terhubung ke python3. .shuntuk perintahmu.

# 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

Semoga ini membantu.

Peter. Chen
sumber
2

Mengedit baris pertama file ini berhasil bagi saya:

MBP-de-Jose:~ josejunior$ which python3

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

MBP-de-Jose:~ josejunior$

sebelum

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

setelah

#!/usr/local/Cellar/python/3.7.3/bin/python3
José Junior
sumber
2

Yang perlu Anda lakukan adalah ... menutup jendela terminal dan membuka kembali jendela baru untuk memperbaiki masalah ini.

Masalahnya adalah, jalur python baru tidak ditambahkan ke bashrc (Sumber atau jendela terminal baru akan membantu).

Nithin Gaddam
sumber
1

Dalam kasus saya, saya memutuskan untuk menghapus instalasi python homebrew dari mac saya karena saya sudah menginstal dua versi python lainnya di mac saya melalui MacPorts. Ini menyebabkan pesan kesalahan.

Menginstal ulang python melalui minuman memecahkan masalah saya.

Simon
sumber
1
sudo /usr/bin/easy_install pip

perintah ini berhasil bagi saya

pengguna9022502
sumber
1

Bagi saya, di centOS 7 saya harus menghapus link pip lama dari / bin oleh

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

lalu tautkan kembali dengan

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

Lalu jika

/usr/local/bin/pip2.7

Berhasil, ini seharusnya berhasil

Nimr Sawafta
sumber
0

Anda dapat memiliki dua versi berbeda dari Python dan pip.

Mencoba untuk:

pip2 install --upgrade pip lalu pip2 install -r requirements.txt

Atau pip3jika Anda menggunakan versi Python yang lebih baru.

Wojciech Bednarski
sumber
0

TLDR: pip ditemukan di jalur Anda a adalah symlink dan lokasi yang dirujuk tidak lagi berisi file yang dapat dieksekusi. Anda perlu memperbarui symlink.

Ini membantu untuk memahami beberapa hal.

  • Ketika Anda mengetik sesuatu seperti pythonatau pipAnda os akan mencari /etc/pathsuntuk mencoba menemukan executable terkait untuk perintah itu. Anda dapat melihat semuanya di sana dengan menggunakan cat /etc/paths.
  • Untuk menentukan lokasi executable yang akan digunakan shell Anda ada perintah praktis which, Anda bisa mengetik which pythonatau which pip. Ini akan memberi tahu Anda lokasi executable yang akan digunakan shell Anda untuk perintah itu.
  • Bagian ini adalah kuncinya . Lokasi mungkin atau mungkin bukan yang sebenarnya dapat dieksekusi, itu bisa menjadi tautan simbolis (symlink).
  • Ini umum untuk /etc/pathsberisi /usr/local/bin, juga umum untuk /usr/local/binmenjadi sekelompok symlink ke executable yang sebenarnya. Bukan executable itu sendiri.
  • Jika eksekusi di lokasi yang direferensikan symlink tidak ada, Anda akan mendapatkan error seperti bad interpreter: No such file or directory

Dengan itu dikatakan masalahnya kemungkinan itu pipadalah symlink dan executable yang ditautkan mungkin tidak ada lagi di lokasi itu. Untuk memperbaikinya lakukan hal berikut

  1. Temukan lokasi yang dapat dieksekusi - which pip(berikan sesuatu seperti ini /usr/local/bin/pip)
  2. Periksa lokasi referensi symlink ls -l /usr/local/bin/pip | grep pip(berikan sesuatu seperti ini pip -> /usr/local/opt/[email protected]/bin/pip3)
  3. Periksa apakah executable ada di lokasi yang dirujuk ls /usr/local/opt/[email protected]/bin/pip3(Anda mengalami masalah ini jadi mungkin tidak).
  4. Hapus symlink lama rm -r /usr/local/bin/pip
  5. Temukan pipeksekusi yang sebenarnya jika menggunakannya homebrew, /usr/local/optAnda dapat menggunakan sesuatu seperti ls /usr/local/opt/ | grep pythonmenemukannya.
  6. Tambahkan symlink yang tepat untuk pip yang dapat dieksekusi. ln -s /usr/local/opt/[email protected]/bin/pip3 /usr/local/bin/pip
Glen Thompson
sumber