pip tidak bekerja pada hombrew python 2.7 instal

15

Saya telah menginstal python menggunakan homebrew dan saya tidak bisa memanggil pip dari bash. Saya sudah mencoba mengubah .bash_profile saya untuk memasukkan / usr / local / bin / python dan / usr local / share / python tetapi tidak berhasil.

Saat saya menggunakan perintah bash:

find / -name 'pip'

Satu-satunya hasil yang saya dapatkan adalah:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

Tidak ada satupun yang dapat dieksekusi.

Saya tidak benar-benar tahu ke mana harus mengarahkan $ PATH saya karena saya tidak dapat menemukan pip yang dapat dieksekusi. Ketika saya membuka

/usr/local/lib/python2.7/site-packages/pip

atau

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

Saya menemukan file-file berikut:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

Tidak ada satupun yang dapat dieksekusi.

Saya akan menghargai bantuan siapa pun dengan pengalaman lebih dari saya.

Sunting: Saya mencoba langkah-langkah yang disarankan oleh Marco:

Berikut adalah hasil langkah-langkahnya:

  1. echo $ PATH memperlihatkan beberapa direktori: / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / opt / X11 / bin: / usr / local / mysql / bin

  2. yang mengembalikan python: / usr / local / bin / python / usr / local / bin / python

tidak ada yang dikembalikan untuk yang -pip

  1. yang mengembalikan python: / usr / local / bin / python

tidak ada yang dikembalikan untuk pip itu

  1. ls -l $ (yang python) mengembalikan direktori tunggal: lrwxr-xr-x 1 Ivan admin 33 17 Mei 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ ular sanca

ls-l $ (pip yang) mengembalikan beberapa, termasuk file python yang saya perlihatkan di posting asli saya

YoungPadawan
sumber

Jawaban:

19

Secara umum, homebrewakan menginstal formulake /usr/local/Cellar/formuladan kemudian menempatkan tautan di /usr/local/bin/formula.

Untuk memanfaatkan formula yang Anda instal, pastikan /usr/local/binada di Anda $PATH. Tunjukkan $PATHdengan mengetik

echo $PATH

Jika /usr/local/bintidak ada di Anda $PATH, letakkan baris ini di akhir ~/.profilefile Anda .

export PATH="/usr/local/bin:$PATH"

Sekarang, periksa apa pythonsyang ditemukan di OSX Anda dengan mengetik:

which -a python

Seharusnya ada satu python yang ditemukan di /usr/bin/(python Apple) dan satu di /usr/local/bin/mana adalah python Homebrew.

which python

akan menunjukkan kepada Anda, python mana yang ditemukan pertama kali di Anda $PATH dan akan dieksekusi ketika Anda memohon python.

Jika Anda ingin tahu, di mana executable berada, perlihatkan dengan mengetik

ls -l $(which python)

Ini bisa terlihat seperti ini: lrwxr-xr-x 1 root wheel 68 7 Mai 13:22 python -> / usr / local / bin / python

Ini akan berhasil pipjuga.

Jika Anda menunjukkan hasil langkah-langkah ini, kami mungkin dapat membantu Anda lebih mudah.

- PEMBARUAN -

Anda telah /usr/local/bin/pythonditautkan ke /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythonberhasil.

tampilkan, jika pipdiinstal dengan mengetik

brew list python | grep pip

Anda harus melihat

/usr/local/Cellar/python/2.7.9/bin/pip

Jika tidak, periksa, apakah ada tautan, yang belum selesai brew install. Memberitahu Anda sesuatu seperti ini:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

Untuk memaksa tautan dan menimpa semua file yang bertentangan:

brew link --overwrite python

Untuk membuat daftar semua file yang akan dihapus:

brew link --overwrite --dry-run python

** TIDAK ADA Apple standar /usr/bin/python**

tautan dari /usr/local/Cellar/python/2.7.9/bin/pythonke/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

Ini diperlukan untuk semua skrip python yang dimulai dengan #!/usr/bin/python. Terutama easy_installakan gagal, jika tautan tidak ada.

Sekarang, Anda dapat berlari

easy_install pip

Semoga Anda membuat kemajuan

Marco M. von Hagen
sumber
Marco, terima kasih atas jawabannya! Silakan lihat pertanyaan asli saya untuk hasil ke langkah-langkah - Saya telah menambahkannya di
YoungPadawan
@YoungPadawan sepertinya Anda tidak memiliki standar Apple /usr/bin/python. Ini tidak baik, karena banyak skrip Python dimulai dengan #!/usr/bin/python. Jika tidak ada python, Anda mendapatkan pesan kesalahan seperti milik Anda. Gunakan brew link --dry-run pythonuntuk memeriksa, apa yang akan diubah ke tautan Anda saat menggunakan brew link --overwrite python. Kami akan menjalankan pip Anda ;-)
Marco M. von Hagen
gunakan brew link --overwrite --dry-run pythonuntuk melihat, file mana yang akan ditimpa.
Marco M. von Hagen
1
Saya telah menandai jawaban Anda karena itu menuntun saya ke jalan yang benar, tetapi pada akhirnya itu adalah masalah izin. Setelah menginstal saya mendapat Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the perintah pembuatan bir python` dan itu membawaku ke beberapa file yang saya tidak memiliki akses yang saya beri nama. Sekarang saya bisa menggunakan pip! Terima kasih lagi
YoungPadawan
1
Dalam kasus saya masalahnya adalah The post-install step did not complete successfullykarena error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. Secara manual menghapus file itu dan kemudian menjalankannya brew postinstall pythonlagi memperbaikinya.
David Pursehouse
5

Jika minuman mengelola instalasi python Anda dan pip tidak lagi disinkronkan (mis. Anda mengetik "pip mana" dan tidak mendapatkan hasil) coba ini dari direktori home Anda:

brew unlink python && brew link python

Tidak yakin apakah metode lama berfungsi lagi (tidak pada mesin saya).

Sekarang konfirmasikan memang menunjuk ke instalasi 2.7 Anda dengan pip --version(itu akan mencantumkan versi utama python dalam output direktori).

GrayedFox
sumber
4

Tidak benar-benar jawaban untuk pertanyaan asli, tetapi jika ada yang berakhir di sini karena Homebrew-instal python/pipmereka tidak lagi berfungsi (yaitu pythonmenunjuk ke sistem python dan piptidak ditemukan) maka alasannya mungkin perubahan (musim panas 2017) baru-baru ini di cara Homebrew menginstal dan menautkan python.

Solusinya adalah dengan menambahkan yang berikut ke ~/.bash_profiledan / atau ~/.zshrc:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

Ini akan pythonmenunjukkan versi pembuatan python dan juga memberi Anda pip. Lihat bagian peringatan di bawah brew info pythondan https://github.com/Homebrew/homebrew-core/issues/15746 untuk informasi lebih lanjut

bjorgvin
sumber
2

Secara default Homebrew menyediakan pip melalui: brew install python. Namun Anda kemudian akan menginstal dua Python pada Mac Anda, Anda dapat menginstalnya melalui:

sudo easy_install pip

Untuk memverifikasi file mana yang diinstal dengan paket Python Anda, coba:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

yang harus terdiri pip.

Setelah instalasi, Anda harus symlink file yang diinstal rumus Anda dengan:

brew link python

yang seharusnya membuat tautan simbolik yang tepat (seperti /usr/local/bin/pipmenunjuk ke Anda Cellar/python/2.?.?/bin/pip)

Jika Anda memiliki masalah izin, Anda dapat memperbaikinya dengan:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

dan pastikan pengguna Anda dalam grup admin ( id -Gn $USER).

Setelah memperbaiki izin, jangan gunakan sudosaat menggunakan brewperintah.

Kemudian tautkan kembali:

brew unlink python && brew link python

Untuk menguji dry-run, putuskan tautan dan jalankan: brew link -n pythonuntuk melihat tautan file yang brewakan ditautkan.

Setelah tautan berhasil, pastikan variabel sistem PATH Anda telah /usr/local, jika tidak, tambahkan:

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

ke ~/.bashrcfile Anda .

Jika berhasil, Anda pipharus bekerja sekarang.

kenorb
sumber
Terima kasih atas jawaban Anda, Kenorb! Sebagian masalahnya adalah easy_install tidak berfungsi untuk saya juga. Dalam bash saya mendapatkan: -bash: / usr / bin / easy_install: / usr / bin / python: bad interpreter: Tidak ada file atau direktori seperti itu
YoungPadawan
Itu berarti Anda belum /usr/bin/pythonmenginstal (yang seharusnya disediakan dengan OS X). Jadi silakan coba seperti yang disarankan, yaitu brew install python && brew link python:, lalu tambahkan /usr/local/binke PATH.
kenorb
Saya tidak berpikir itu brew install python && brew link pythonmemasukkan python /usr/bin. Saya melihatnya usr/local/bin, tapi saya tidak melihat symlink ke pip di sana. Saya telah memutuskan tautan dan menautkan python juga, dan tidak ada yang berubah. Tampaknya brew install dan tautannya tidak menempatkan hal-hal di mana seharusnya
YoungPadawan
@YoungPadawan brewtidak melakukan apa-apa /usr/bin, tapi /usr/local/bin. Coba: brew unlink pythondan jalankan-kering: brew link -n pythonuntuk membuat daftar semua file yang harus ditautkan dan periksa apakah pipada. Jika ya, jalankan lagi tanpa -n.
kenorb
Terima kasih Kenorb, saya telah menemukan solusinya. Pada akhirnya itu adalah instalasi yang salah karena izin. Saya memodifikasi izin pada beberapa file yang dibuat bertentangan dengan dan menjalankan kembali instalasi dan sekarang semuanya berfungsi dengan baik. Ada lebih banyak detail dalam komentar untuk pertanyaan di atas. Sekali lagi terima kasih atas jawaban Anda, sangat membantu saya untuk mendapatkan solusinya.
YoungPadawan