Что произойдет, если я случайно pip install
уже установил пакет, используя apt-get
заранее? Могу ли я просто использовать последнюю версию (т. Е., Вероятно, ту, которую я установил с помощью pip
)? Что происходит наоборот?
Примечание: я не использую Python в виртуальной среде (просто потому, что я не знаю, почему я должен - я использую Python как инструмент анализа данных и в основном пытаюсь использовать последняя версия всего).
Как @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 через способный (-добираются), это установит в '/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__"
.
По сути, это показывает, что пакеты, установленные через зернышко, будут иметь приоритет по установленным на системе пакетам, но не перезапишут ничего установленного от способного (-добираются).
Чтобы добавить к @Bryan Wyatt, это кажется желательным (и предназначенный), что ЗЕРНЫШКО установило/обновило объекты, должен иметь приоритет по (вероятно, более старый), APT установил пакеты. Моя система имела способные пути и инвертированные пути зернышка. Это должно быть (игнорирование других записей):
все же из-за некоторого неизвестного действия я, должно быть, взял, эти пути появились в противоположном порядке на меня (игнорирование других записей):
Это оказывается чем-то, что я сделал добавленный /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']