Pip không hoạt động trên cài đặt python hombrew 2.7


15

Tôi đã cài đặt python bằng homebrew và tôi không thể gọi pip từ bash. Tôi đã thử sửa đổi .bash_profile của mình để bao gồm / usr / local / bin / python và / usr local / share / python nhưng không có kết quả.

Khi tôi sử dụng lệnh bash:

find / -name 'pip'

Kết quả duy nhất tôi nhận được là:

/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

Không ai trong số đó là một thực thi.

Tôi thực sự không biết nơi để chỉ $ PATH của mình vì tôi không thể tìm thấy pip thực thi. Khi tôi mở

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

hoặc là

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

Tôi tìm thấy các tập tin sau:

__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

Không ai trong số đó là một thực thi.

Tôi sẽ đánh giá cao sự giúp đỡ của bất cứ ai có nhiều kinh nghiệm hơn tôi.

Chỉnh sửa: Tôi đã thử các bước được đề xuất bởi Marco:

Dưới đây là kết quả cho các bước:

  1. echo $ PATH hiển thị một vài thư mục: / 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. Mà -a python trả về: / usr / local / bin / python / usr / local / bin / python

không có gì được trả lại cho -a pip

  1. python trả về: / usr / local / bin / python

không có gì được trả lại cho pip nào

  1. ls -l $ (mà python) trả về một thư mục duy nhất: lrwxr-xr-x 1 Ivan admin 33 17 tháng 5 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ trăn

ls -l $ (mà pip) trả về một số, bao gồm các tệp python mà tôi đã hiển thị trong bài viết gốc của mình

Câu trả lời:


19

Nói chung, homebrewsẽ cài đặt formulavào /usr/local/Cellar/formulavà sau đó đặt một liên kết tại /usr/local/bin/formula.

Để sử dụng các công thức đã cài đặt của bạn, hãy chắc chắn rằng /usr/local/bintrong của bạn $PATH. Hiển thị của bạn $PATHbằng cách gõ

echo $PATH

Nếu /usr/local/binkhông có trong của bạn $PATH, đặt dòng này ở cuối ~/.profiletập tin của bạn .

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

Bây giờ, hãy kiểm tra những gì pythonsđược tìm thấy trên OSX của bạn bằng cách nhập:

which -a python

Cần có một con trăn được tìm thấy tại /usr/bin/(con trăn Apple) và một con trăn /usr/local/bin/đó là con trăn Homebrew.

which python

sẽ cho bạn thấy, con trăn nào được tìm thấy đầu tiên trong bạn $PATH và sẽ được thực thi khi bạn gọi python.

Nếu bạn muốn biết, nơi thực thi được, hãy hiển thị nó bằng cách gõ

ls -l $(which python)

Cái này có thể trông như thế này: lrwxr-xr-x 1 root wheel 68 7 Mai 13:22 python -> / usr / local / bin / python

Điều này sẽ làm việc cho piplà tốt.

Nếu bạn hiển thị kết quả của các bước này, có lẽ chúng tôi có thể giúp bạn dễ dàng hơn nhiều.

- CẬP NHẬT -

Bạn đã /usr/local/bin/pythonliên kết đến /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythonđã làm việc.

hiển thị, nếu pipđược cài đặt bằng cách gõ

brew list python | grep pip

Bạn nên thấy

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

Nếu không, hãy kiểm tra, nếu có các liên kết, không được thực hiện với brew install. Đã nói với bạn một cái gì đó như thế này:

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

Để buộc liên kết và ghi đè tất cả các tệp xung đột:

brew link --overwrite python

Để liệt kê tất cả các tệp sẽ bị xóa:

brew link --overwrite --dry-run python

** KHÔNG Apple tiêu chuẩn /usr/bin/python**

liên kết từ /usr/local/Cellar/python/2.7.9/bin/pythonđến/usr/bin/python

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

Điều này là cần thiết cho tất cả các kịch bản python bắt đầu với #!/usr/bin/python. Đặc biệt easy_installsẽ thất bại, nếu không có liên kết.

Bây giờ, bạn có thể chạy

easy_install pip

Hy vọng, bạn đang tiến bộ


Marco, cảm ơn câu trả lời của bạn! Vui lòng xem câu hỏi ban đầu của tôi để biết kết quả cho các bước - Tôi đã thêm chúng vào
YoungPadawan 17/05/2015

@YoungPadawan có vẻ như bạn không có tiêu chuẩn của Apple /usr/bin/python. Điều này là không tốt, bởi vì nhiều tập lệnh Python bắt đầu bằng #!/usr/bin/python. Nếu không có python, bạn nhận được thông báo lỗi như của bạn. Sử dụng brew link --dry-run pythonđể kiểm tra, những gì sẽ được thay đổi liên kết của bạn khi sử dụng brew link --overwrite python. Chúng tôi sẽ chạy pip của bạn ;-)
Marco M. von Hagen

sử dụng brew link --overwrite --dry-run pythonđể xem, tập tin nào sẽ bị ghi đè.
Marco M. von Hagen

1
Tôi đã đánh dấu câu trả lời của bạn vì nó dẫn tôi đi đúng đường, nhưng cuối cùng thì đó là vấn đề cho phép. Sau khi cài đặt, tôi nhận được lệnh Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the brew postinstall python` và nó dẫn tôi đến một vài tệp mà tôi không có quyền truy cập. Bây giờ tôi có thể sử dụng pip! Cảm ơn một lần nữa
YoungPadawan

1
Trong trường hợp của tôi, vấn đề là The post-install step did not complete successfullydo error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. Xóa thủ công tệp đó và sau đó chạy brew postinstall pythonlại đã sửa nó.
David Pursehouse

5

Nếu brew đang quản lý cài đặt python của bạn và pip không còn được liên kết với nhau (tức là bạn nhập "which pip" và không có kết quả), hãy thử điều này từ thư mục chính của bạn:

brew unlink python && brew link python

Không chắc phương thức cũ có hoạt động nữa không (nó không có trên máy của tôi).

Bây giờ xác nhận rằng nó thực sự trỏ đến cài đặt 2.7 của bạn với pip --version(nó sẽ liệt kê phiên bản chính của python trong đầu ra thư mục).


4

Không thực sự là một câu trả lời cho câu hỏi ban đầu, nhưng nếu bất kỳ ai kết thúc ở đây vì cài đặt Homebrew của họ python/pipkhông còn hoạt động (nghĩa là pythonchỉ vào python hệ thống và pipkhông được tìm thấy) thì lý do có thể là một sự thay đổi gần đây (mùa hè 2017) cách Homebrew cài đặt và liên kết python.

Giải pháp là thêm các mục sau vào ~/.bash_profilevà / hoặc ~/.zshrc:

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

Điều này sẽ làm cho pythonphiên bản bia của python và cũng cung cấp cho bạn pip. Xem phần hãy cẩn thận bên dưới brew info pythonhttps://github.com/Homebrew/homebrew-core/issues/15746 để biết thêm thông tin


2

Theo mặc định, Homebrew cung cấp pip thông qua : brew install python. Tuy nhiên, sau đó bạn sẽ có hai Pythons được cài đặt trên máy Mac của mình, bạn có thể cài đặt nó thông qua:

sudo easy_install pip

Để xác minh tệp nào được cài đặt với gói Python của bạn, hãy thử:

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

mà nên bao gồm pip.

Sau khi cài đặt, bạn nên liên kết các tệp đã cài đặt của công thức bằng cách:

brew link python

cái nào sẽ tạo ra các liên kết tượng trưng đúng (chẳng hạn như /usr/local/bin/pipchỉ vào của bạn Cellar/python/2.?.?/bin/pip)

Nếu bạn gặp sự cố về quyền, bạn có thể khắc phục bằng cách:

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

và đảm bảo người dùng của bạn nằm trong nhóm quản trị ( id -Gn $USER).

Sau khi sửa quyền, không sử dụng sudokhi sử dụng brewlệnh.

Sau đó liên kết lại lần nữa:

brew unlink python && brew link python

Để kiểm tra chạy khô, hủy liên kết và chạy: brew link -n pythonđể xem các liên kết của các tệp brewsẽ liên kết.

Sau khi liên kết thành công, hãy đảm bảo rằng biến hệ thống PATH của bạn có /usr/local, nếu không, thêm:

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

vào ~/.bashrctập tin của bạn .

Nếu thành công, bạn pipnên làm việc ngay bây giờ.


Cảm ơn câu trả lời của bạn kenorb! Một phần của vấn đề là easy_install cũng không hoạt động với tôi. Trong bash tôi nhận được: -bash: / usr / bin / easy_install: / usr / bin / python: bad phiên dịch: Không có tệp hoặc thư mục như vậy
YoungPadawan

Điều đó có nghĩa là bạn chưa /usr/bin/pythoncài đặt (thường được cung cấp với OS X). Vì vậy, hãy thử như đề xuất, đó là : brew install python && brew link python, sau đó thêm /usr/local/binvào của bạn PATH.
kenorb 17/05/2015

Tôi không nghĩ rằng brew install python && brew link pythonđang đưa trăn vào /usr/bin. Tôi đang nhìn thấy nó usr/local/bin, nhưng tôi không thấy symlink đến pip ở đó. Tôi cũng đã hủy liên kết và liên kết python, và không có gì thay đổi. Có vẻ như cài đặt và liên kết bia không đặt những thứ cần thiết
YoungPadawan

@YoungPadawan brewkhông làm gì với /usr/bin, nhưng /usr/local/bin. Hãy thử: brew unlink pythonvà chạy khô: brew link -n pythonđể liệt kê tất cả các tệp cần được liên kết và kiểm tra xem pipcó ở đó không. Nếu có, chạy lại mà không có -n.
kenorb

Cảm ơn Kenorb, tôi đã tìm thấy một giải pháp. Cuối cùng, nó là một cài đặt bị lỗi do quyền. Tôi đã sửa đổi các quyền trên một vài tệp mà mâu thuẫn với và chạy lại cài đặt và bây giờ mọi thứ đều hoạt động tốt. Có nhiều chi tiết hơn trong một bình luận cho câu hỏi trên. Cảm ơn một lần nữa cho câu trả lời của bạn, nó thực sự hữu ích trong việc đưa tôi đến giải pháp.
YoungPadawan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.