pip не работает на hombrew python 2.7 install


15

Я установил python, используя homebrew, и я не могу вызвать pip из bash. Я попытался изменить мой .bash_profile, чтобы включить / usr / local / bin / python и / usr local / share / python безрезультатно.

Когда я использую команду bash:

find / -name 'pip'

Единственные результаты, которые я получаю:

/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

Ни один из которых не является исполняемым.

Я на самом деле не знаю, куда указывать мой $ PATH, так как не могу найти исполняемый файл pip. Когда я открою

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

или же

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

Я нахожу следующие файлы:

__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

Ни один из которых не является исполняемым.

Я был бы признателен за помощь тех, кто имеет больше опыта, чем я.

Изменить: я попробовал шаги, предложенные Марко:

Вот результаты к шагам:

  1. echo $ PATH показывает несколько каталогов: / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / OPT / X11 / бен: / USR / местные / MySQL / бен

  2. который -a Python возвращает: / usr / local / bin / python / usr / local / bin / python

ничего не возвращается за что -a пипс

  1. какой python возвращает: / usr / local / bin / python

за который пункт не возвращается

  1. ls -l $ (какой python) возвращает один каталог: lrwxr-xr-x 1 Ivan admin 33 17 мая 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ питон

ls -l $ (which pip) возвращает несколько, включая файлы python, которые я показал в моем исходном посте

Ответы:


19

Как правило, homebrewустановить formulaв, /usr/local/Cellar/formulaа затем разместить ссылку на /usr/local/bin/formula.

Чтобы воспользоваться установленными формулами, убедитесь, что они /usr/local/binу вас $PATH. Покажите свое $PATH, набрав

echo $PATH

Если /usr/local/binнет в вашей $PATH, поместите эту строку в конец вашего ~/.profileфайла.

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

Теперь, проверьте, что pythonsнайдено на вашем OSX, набрав:

which -a python

Там должен быть один питон /usr/bin/(Apple питон), а другой /usr/local/bin/- домбрюйский питон.

which python

покажет вам, какой питон найден первым в вашем $PATH и будет выполнен при вызове python.

Если вы хотите узнать, где находится исполняемый файл, покажите его, набрав

ls -l $(which python)

Это может выглядеть так: корневое колесо lrwxr-xr-x 1 68 7 май 13:22 python -> / usr / local / bin / python

Это также будет работать pip.

Если вы покажете результаты этих шагов, мы, вероятно, поможем вам намного проще.

-- ОБНОВИТЬ --

Вы /usr/local/bin/pythonсвязаны /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythonсработало.

покажи, если pipустановлен, набрав

brew list python | grep pip

Тебе следует увидеть

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

Если нет, проверьте, есть ли ссылки, которые не сделаны с brew install. Сказал вам что-то вроде этого:

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

Чтобы заставить ссылку и перезаписать все конфликтующие файлы:

brew link --overwrite python

Чтобы просмотреть все файлы, которые будут удалены:

brew link --overwrite --dry-run python

** НЕТ стандартного Apple /usr/bin/python**

ссылка с /usr/local/Cellar/python/2.7.9/bin/pythonна/usr/bin/python

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

Это необходимо для всех скриптов Python, начинающихся с #!/usr/bin/python. Особенно easy_installпотерпит неудачу, если ссылки там нет.

Теперь вы можете запустить

easy_install pip

Надеюсь, ты добиваешься прогресса


Марко, спасибо за твой ответ! Пожалуйста, смотрите мой оригинальный вопрос о результатах к шагам - я добавил их в
YoungPadawan

@YoungPadawan выглядит так, будто у вас нет стандарта Apple /usr/bin/python. Это не хорошо, потому что многие скрипты Python начинаются с #!/usr/bin/python. Если Python отсутствует, вы получите сообщение об ошибке, подобное вашему. Используйте, brew link --dry-run pythonчтобы проверить, что будет изменено на ваши ссылки при использовании brew link --overwrite python. Мы запустим ваш пункт ;-)
Марко М. фон Хаген

используйте, brew link --overwrite --dry-run pythonчтобы увидеть, какие файлы будут перезаписаны.
Марко М. фон Хаген

1
Я отметил ваш ответ, потому что он привел меня на правильный путь, но в конце концов это была проблема с разрешением. После установки я получил Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the команду brew postinstall python`, которая привела меня к нескольким файлам, к которым у меня не было доступа, и которые я записал. Теперь я могу использовать пипс!
Еще

1
В моем случае проблема была The post-install step did not complete successfullyиз-за error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. Удаление этого файла вручную и последующий запуск brew postinstall pythonисправили его.
Дэвид Pursehouse

5

Если brew управляет вашей установкой Python, а pip больше не является символической ссылкой (т.е. вы набираете «which pip» и не получаете результатов), попробуйте это из своего домашнего каталога:

brew unlink python && brew link python

Не уверен, что старый метод работает больше (это не на моей машине).

Теперь подтвердите, что он действительно указывает на вашу установку 2.7 pip --version(он перечислит основную версию python в выходных данных каталога).


4

На самом деле не является ответом на первоначальный вопрос, но если кто-то окажется здесь, потому что его установленный Homebrew python/pipбольше не работает (т.е. pythonуказывает на системный python и pipне найден), то причиной может быть недавнее (лето 2017) изменение в Кстати Homebrew устанавливает и связывает Python.

Решение состоит в том, чтобы добавить следующее к ~/.bash_profileи / или ~/.zshrc:

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

Это будет pythonуказывать на варочную версию Python, а также даст вам pip. См. Раздел предостережений brew info pythonи https://github.com/Homebrew/homebrew-core/issues/15746 для получения дополнительной информации.


2

По умолчанию Homebrew обеспечивает пип через: brew install python. Тем не менее, у вас будет два Pythons, установленных на вашем Mac, вы можете установить его через:

sudo easy_install pip

Чтобы проверить, какие файлы установлены с вашим пакетом Python, попробуйте:

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

который должен состоять pip.

После установки вы должны сделать символическую ссылку на установленные файлы вашей формулы:

brew link python

который должен создавать правильные символические ссылки (например, /usr/local/bin/pipуказывать на ваш Cellar/python/2.?.?/bin/pip)

Если у вас есть проблема с разрешением, вы можете исправить ее:

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

и убедитесь, что ваш пользователь находится в группе администраторов ( id -Gn $USER).

После исправления разрешений не используйте sudoпри использовании brewкоманды.

Затем снова связать его:

brew unlink python && brew link python

Чтобы протестировать пробный запуск, отсоедините и запустите: brew link -n pythonчтобы увидеть ссылки на файлы, которые brewбудут ссылаться.

После успешного установления связи убедитесь, что ваша системная переменная PATH имеет /usr/local, если нет, добавление:

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

в ваш ~/.bashrcфайл.

В случае успеха, вы pipдолжны работать сейчас.


Спасибо за ответ kenorb! Частично проблема в том, что easy_install у меня тоже не работает. В bash я получаю: -bash: / usr / bin / easy_install: / usr / bin / python: плохой интерпретатор: нет такого файла или каталога
YoungPadawan

Это означает, что вы не /usr/bin/pythonустановили (что обычно должно быть предоставлено с OS X). Поэтому, пожалуйста, попробуйте, как предложено, то есть brew install python && brew link python, затем добавьте /usr/local/binв свой PATH.
Кенорб

Я не думаю, что brew install python && brew link pythonэто вводит Python /usr/bin. Я вижу это usr/local/bin, но я не вижу символическую ссылку, чтобы пип там. Я также не связал и не связал Python, и ничего не изменилось. Кажется, что установка brew и ссылка не
помещают

@YoungPadawan brewничего не делает /usr/bin, но /usr/local/bin. Попробуйте: brew unlink pythonи всухую: brew link -n pythonперечислить все файлы, которые должны быть связаны, и проверить, есть ли pipтам. Если да, запустите снова без -n.
Кенорб

Спасибо, Кенорб, я нашел решение. В итоге это была неправильная установка из-за разрешений. Я изменил разрешения для нескольких файлов, с которыми конфликтовал brew, и перезапустил установку, и теперь все работает нормально. Более подробно в комментарии к вопросу выше. Еще раз спасибо за ваш ответ, это действительно помогло мне найти решение.
YoungPadawan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.