2015-01-17 4 views
1

У меня возникли проблемы при добавлении каталог в мой PYTHONPATH каталог является /usr/local/lib/python2.7/dist-packagesPYTHONPATH разница sys.path

Когда я бегу

PYTHONPATH=/usr/local/lib/python2.7/dist-packages python -c 'import sys; print sys.path' 

Я не могу найти его в результате. Пробуя это, я заметил следующее: Каталог исчезает с sys.path, когда /usr/local/lib/python2.7 есть в качестве префикса, например. следующие работы: тонкие

PYTHONPATH=/usr/local/lib python -c 'import sys; print sys.path' 

Я не устанавливая PYTHONPATH нигде, и я проверил, запуская его с Sudo.

+0

Вы уверены, что '/ usr/local/lib/python2.7/dist-packages' не ** уже ** на вашем пути? Он не будет добавлен на передний план, если он уже указан. –

+0

Это не так. Просто проверяйте один за другим. – Chris

+0

Что вы получите, если запустите это? 'PYTHONPATH =/usr/local/lib/python2.7/dist-packages python -c 'import sys; print "/usr/local/lib/python2.7/dist-packages" в sys.path'' – falsetru

ответ

1

Существует несколько причин, по которым может появиться путь. Удостоверьтесь, что вы не попали ни в один из них:

  • Путь должен существовать, несуществующие пути игнорируются. От PYTHONPATH documentation:

    Необязательные каталоги молча игнорируются.

  • Дубликаты удалены (первая запись сохранена); пути становятся абсолютными (относительно текущего рабочего каталога) и сравниваются без учета регистра на платформах, где это имеет значение.

    Итак, если у вас есть относительный путь, который доходит до того же абсолютного пути в вашем sys.path, сохраняется только первая запись.

  • После нормирования и очистки site module пытается импортировать sitecustomize и usercustomize модулей. Они также могут манипулировать sys.path.

Вы можете взять более близкий взгляд на ваши sys.path сразу после очистки, и если есть usercustomize модуль для импорта, запустив site модуль в качестве инструмента командной строки:

python -m site 

Это будет распечатайте свой sys.path в удобном для чтения формате с одной строкой.

+0

Спасибо, это помогло , – Chris

+0

Флаг -S отключает сайт. С -S я могу импортировать и использовать пакет. Без него, то есть с включенным сайтом, импорт не выполняется. – Chris

+0

Пакет, который находится в '/ usr/local/lib/python2.7/dist-packages', называется' z3'. Это работает: 'PYTHONPATH =/usr/local/lib/python2.7/dist-packages python -S -c 'import z3'', и это вызывает ошибку импорта' PYTHONPATH =/usr/local/lib/python2.7/dist-packages python -S -c 'import site; import z3'' – Chris

Смежные вопросы