Менеджер пакетов python - избегать конфликтов с apt-get
Прочитав этот комментарий по обновлению pip, я запустил:
sudo pip3 install --upgrade pip
Как указывает @ByteCommander, обновление идет в /usr/local/bin/pip3
в то время как версия дистрибутива (из python3-pip) находится по адресу /usr/bin/pip3
и первый имеет приоритет из-за порядка в PATH. Кажется, это работает нормально, но если я специально запускаю версию Ubuntu (16.04), я получаю сообщение об ошибке:
/usr/bin/pip3 -V
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
Это заставляет меня опасаться обновлений Python. Итак, я застрял, пытаясь установить пакет python, который на самом деле из репозитория git и которого нет в репозиториях apt-get, и который также имеет зависимости.
3 ответа
Как показывает ссылка, на которую указывает @siddesh-chavan, существуют некоторые проблемы с интерфейсом apt-get и менеджером пакетов python. Я бы не рекомендовал это связанное решение. Вместо этого, я считаю, что лучше всего прочитать это, и если вы уже обновили pip/pip3, то понизьте этот путь. В результате не обновляйте системный pip или pip3. Делайте установки и обновления локально, используя pip* install --user
,
В ответе под этой второй ссылкой также упоминаются виртуальные среды, как и @steve в своем ответе - см. Ниже.
Мое мнение после многолетнего опыта работы с проблемами зависимостей Python заключается в том, что вам не следует обновлять системные пакеты Python вне apt. Это всегда вызывает подобные проблемы. Менеджер системных пакетов предоставляет стабильные версии Python и различные пакеты Python со сложной системой зависимостей, и когда вы пытаетесь вручную изменить их вне apt, это может привести к путанице.
Я бы порекомендовал очистить python-pip, переустановить версию, предоставленную apt, а затем использовать только системный Python для системных задач и небольших скриптов, которые не нуждаются в дополнительных пакетах. Для разработки, которая требует других пакетов, которые вы обычно устанавливаете с помощью pip, вы можете либо создать виртуальные среды (которые в основном являются новыми установками Python, которые не влияют на систему Python), либо, что еще лучше (IMO), установить Anaconda Python, который позволяет Вам нужно установить пакеты Python с pip и conda, не нарушая систему Python.
На это уже есть пост.
Это сработало для меня.