У меня есть два компьютера, на которых запущен сервер Ubuntu 14.04 (позвоните им A и B). B первоначально был 10,04, но он получил два обновления до 12,04 и 14,04. Я не понимаю, почему путь python отличается на двух компьютерах.
Как вы можете видеть на двух путях ниже, путь установки пакета /usr/local/lib/python2.7/dist-packages
доходит до до пути apt python пакетов /usr/lib/python2.7/dist-packages
на Ubuntu A, но он приходит после на Ubuntu B.
Это приводит к нескольким проблемам, если пакет python установлен как через apt, так и в pip. Как вы можете видеть ниже, если установлены пакет python-six
apt и six
pip, они могут быть двумя разными версиями библиотеки.
Установка системы пакетов не всегда является моим выбором, но может быть некоторыми зависимостями других установленных пакетов.
Эта проблема, вероятно, может быть решена с помощью virtualenv, но по причинам, которые я не буду подробно описывать, я не могу использовать virtualenv здесь и должен устанавливать пакеты пакетов в общесистемной области.
Ubuntu A
>>> import sys, six
>>> sys.path
['',
'/usr/local/bin',
'/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/local/lib/python2.7/dist-packages/IPython/extensions']
>>> six
<module 'six' from '/usr/local/lib/python2.7/dist-packages/six.pyc'>
Ubuntu B
>>> import sys, six
>>> sys.path
['',
'/usr/local/bin',
'/usr/lib/python2.7/dist-packages',
'/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/PILcompat',
'/usr/local/lib/python2.7/dist-packages/IPython/extensions']
>>> six
>>> <module 'six' from '/usr/lib/python2.7/dist-packages/six.pyc'>
Для обеих машин $PATH
одинаков, а $PYTHONPATH
пуст.
-
Почему эти PYTHONPATHS отличаются?
-
Как я могу исправить порядок pythonpath в "Ubuntu B", чтобы он загружал пип пакеты перед системными, в общесистемном режиме? Есть ли подходящий пакет, который я должен переустановить или переконфигурировать, чтобы PYTHONPATH определил приоритет пакетов пакетов?