Пакеты перезаписи pip установлены с помощью apt-get?

Что произойдет, если я случайно pip install уже установил пакет, используя apt-get заранее? Могу ли я просто использовать последнюю версию (т. Е., Вероятно, ту, которую я установил с помощью pip)? Что происходит наоборот?

Примечание: я не использую Python в виртуальной среде (просто потому, что я не знаю, почему я должен - я использую Python как инструмент анализа данных и в основном пытаюсь использовать последняя версия всего).

9
задан 31 May 2014 в 04:03

2 ответа

Как @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' '(где способные модули установки)

самый важный для примечания, однако, то, что '/usr/local/lib/python2.7/dist-packages'' ВЫШЕ на приоритете, чем '/usr/lib/python2.7/dist-packages' '.

при первой установке пакета Python через способный (-добираются), это установит в '/usr/lib/python2.7/dist-packages''. Если Вы позже попытаетесь использовать зернышко для установки модуля, то зернышко первоначально даст предупреждение, что зависимость уже встречена, то выйдите; при добавлении - флаг обновления вынудит зернышко установить, устанавливая модуль в '/usr/local/lib/python2.7/dist-packages''. (Заметьте вывод, который также говорит, что версия в '/usr/lib/python2.7/dist-packages' 'не удаляется), можно затем проверить, что установленная версия зернышка является той, используемой при помощи следующего: python -c "import MODULE; print MODULE.__file__".

По сути, это показывает, что пакеты, установленные через зернышко, будут иметь приоритет по установленным на системе пакетам, но не перезапишут ничего установленного от способного (-добираются).

3
ответ дан 31 May 2014 в 04:03

Чтобы добавить к @Bryan Wyatt, это кажется желательным (и предназначенный), что ЗЕРНЫШКО установило/обновило объекты, должен иметь приоритет по (вероятно, более старый), APT установил пакеты. Моя система имела способные пути и инвертированные пути зернышка. Это должно быть (игнорирование других записей):

  • '/usr/local/lib/python2.7/dist-packages' '(где зернышко устанавливает модули)
  • '/usr/lib/python2.7/dist-packages' '(где способные модули установки)

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

  • '/usr/lib/python2.7/dist-packages'' (где способные модули установки)
  • '/usr/local/lib/python2.7/dist-packages'' (где зернышко устанавливает модули)

Это оказывается чем-то, что я сделал добавленный /usr/lib/python2.7/dist-packages к /usr/local/lib/python2.7/dist-packages/easy-install.pth. Просто удаление строки от easy-install.pth зафиксировало misordering для меня. /usr/lib/python2.7/dist-packages находится все еще в моем пути, так как это добавляется на более позднем этапе в другом месте.

Как примечание стороны, печать отобразит Ваш путь, более хороший... т.е.:

$ python -c "import sys; import pprint; pprint.pprint(sys.path)"
['',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
1
ответ дан 31 May 2014 в 04:03

Другие вопросы по тегам:

Похожие вопросы: