it-swarm.com.ru

Пип внезапно использует неверную версию Python

Возникла странная проблема с pip на os x.

Насколько я могу вспомнить (и быстрый взгляд на мою .bash_history, кажется, подтверждает), я не сделал каких-либо недавних изменений в моей конфигурации. Увы, команда pip внезапно использует версию Python, отличную от той, что была раньше. До сих пор я использовал команду pip для управления моими библиотеками python2 и pip3 для управления библиотеками python3. Внезапно любые попытки запустить установку pip завершаются неудачно с ошибками, такими как отсутствие круглых скобок вокруг операторов print.

Вот результат нескольких команд, которые я попытался выяснить, проблема:

which pip > /usr/local/bin/pip

which pip3 > /usr/local/bin/pip3

which python > /usr/local/bin/python

python version > Python 2.7.11

pip --version > pip 8.1.1 from /usr/local/lib/python3.5/site-packages (python 3.5)

По какой-то причине команда pip, похоже, выполняется из базы данных PyPi2, но в python3 сейчас? Любые идеи, как это исправить?

8
jcmiller11

Я работаю с несколькими версиями Python и, следовательно, с несколькими версиями в pip.

Однако каждый раз, когда вы обновляете pip, вы заменяете стандартную команду pip версией, которую вы обновили. Так что даже pip3 install --upgrade pip вставит /usr/local/bin/pip в вашу систему, испортив версию Python 2.

Вместо этого я запускаю pip как (исполняемый) модуль:

python3 -m pip search <package>

или же 

python2 -m pip search <package>

или даже

python3.5 -m pip search <package>

Это гарантирует, что ваша версия pip всегда соответствует версии Python, для которой вы хотите ее использовать. Он несколько длиннее, но я предпочитаю его явность (что, я думаю, следует за Zen of Python).

Обратите внимание, что обновление пипа:

python3.5 -m pip install --upgrade pip

по-прежнему будет устанавливать версию Python 3.5 в /usr/local/bin/pip, но я просто игнорирую это. Остерегайтесь сценариев (Shell), которые выполняют pip напрямую.

12
user707650

У меня была точно такая же проблема!

Я переустанавливаю python2 с помощью brew brew reinstall [email protected]

после переустановки pip install packagename работает!

3
shihs

Попробуйте установить псевдонимы, выполнив следующие команды в терминале:

alias pip="/usr/local/bin/pip"
alias pip2="/usr/local/bin/pip"
alias pip3="/usr/local/bin/pip3"

Если это решит вашу проблему, то вам нужно добавить псевдонимы в свой профиль bash. Посмотрите Как мне создать псевдоним Bash? для получения дополнительной информации.

Кроме того, вы должны переустановить pip с помощью python2 get-pip.py, а затем python3 get-pip.py get-pip.py можно скачать здесь https://bootstrap.pypa.io/get-pip.py

2
alec_djinn

Найдите абсолютный путь к Python, который вы хотите использовать:

which python

Откройте ваш исполняемый скрипт по умолчанию:

vi $(which pip)

Вы увидите строку Шебанга вверху, которая может указывать на неправильный Python (у меня это тоже было когда-то).

Укажите нужный вам Python (см. Шаг 1), например:

#!/usr/local/bin/python3.7
0
Dmitry Tokarev