Что произойдет, если я случайно pip install
установлю пакет, который уже установил, используя apt-get
предварительно? Могу ли я просто использовать последнюю версию (то есть, вероятно, ту, которую я установил, используя pip
)? Что происходит наоборот?
Примечание: я не использую Python в виртуальной среде (просто потому, что я не знаю, почему я должен - я использую Python как инструмент анализа данных и в основном стараюсь использовать самую последнюю версию всего).
apt-get
иpip
pip
устанавливает их в/usr/local
подкаталоги по умолчанию или любой другой каталог, если хотите.apt-get install python-pandas
а затемpip install pandas
, или наоборот? Как моя глобальная установка Python знает, какую из двух версий использовать?python -c "import sys; print sys.path"
Ответы:
Как упомянул @Timo в своем комментарии,
python -c "import sys; print sys.path"
вы получите путь загрузки модуля Python для вашей установки Python. На относительно свежей установке 16.04 есть три заметки (среди 10, которые были у меня):Однако наиболее важно отметить, что «/usr/local/lib/python2.7/dist-packages» имеет более высокий приоритет, чем «/usr/lib/python2.7/dist-packages».
Если вы сначала установите пакет Python через apt (-get), он установится в /usr/lib/python2.7/dist-packages. Если позже вы попытаетесь использовать модуль pip для установки модуля, pip сначала выдаст предупреждение о том, что зависимость уже достигнута, а затем завершится; добавление флага --upgrade заставит pip установить, установив модуль в «/usr/local/lib/python2.7/dist-packages». (Обратите внимание на вывод , который также говорит о том , что версия в «/usr/lib/python2.7/dist-packages» не удаляется) Вы можете проверить , что пип-установленная версия является один используется, используя следующее:
python -c "import MODULE; print MODULE.__file__"
.Таким образом, это показывает, что пакеты, установленные через pip, будут иметь приоритет над установленными системой пакетами, но не будут перезаписывать все, что установлено из apt (-get).
источник
Чтобы добавить к @Bryan Wyatt, кажется желательным (и предполагаемым), что установленные / обновленные элементы PIP должны иметь приоритет над (вероятно более старыми) установленными пакетами APT. В моей системе пути apt и pip поменялись местами. Должно быть (игнорируя другие записи):
Однако из-за неизвестного действия, которое я должен был предпринять, эти пути появились для меня в обратном порядке (игнорируя другие записи):
Оказывается, кое-что я добавил
/usr/lib/python2.7/dist-packages
к/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Простое удаление линииeasy-install.pth
исправило неправильный порядок для меня./usr/lib/python2.7/dist-packages
все еще на моем пути, так как он добавляется на более позднем этапе в другом месте.Как примечание, pprint покажет ваш путь лучше ... то есть:
источник