добавленный путь в PYTHONPATH изменяет целые разделы sys.path

#python #module #python-import #enthought

#python #модуль #python-импорт #мысль

Вопрос:

У меня установлено множество версий пакетов. Моя база, системный python ~/Library/Enthought/Canopy_64bit/User/lib/python2.7/
но у меня также есть приложение (‘yt’), которое установило свой собственный python для
~/Applications/yt/yt-x86_64/lib/python2.7/

Я добавил путь yt, чтобы я мог импортировать модуль, который он включает, когда я запускаю свой системный python. Проблема в том, что когда я добавляю yt-path к PYTHONPATH нему, добавляется множество других каталогов к более высоким записям в my sys.path , так что, когда я пытаюсь импортировать numpy (например), я в конечном итоге получаю yt-версию вместо моей системной версии.

Есть ли способ sys.path предотвратить мои изменения?

Ответ №1:

PYTHONPATH значения всегда вставляются перед стандартными путями к библиотекам python в sys.path

Один из возможных подходов к решению этой проблемы — добавить yt путь к sys.path себе.

Так что попробуйте

 # append to the *end* of the system path.
sys.path.append('~/Applications/yt/yt-x86_64/lib/python2.7/path/to/libs')
 

при этом yt конкретные модули будут помещены в конец списка, и ваша система numpy будет найдена / импортирована первой.

Комментарии:

1. Другие вещи, которые я добавил в PYTHONPATH, похоже, добавляются в конец sys.path — похоже, именно этот yt материал меняет порядок… Я не уверен. В любом случае — ваша идея добавить путь конкретно к библиотекам великолепна и, похоже, работает! Спасибо!

2. @zhermes — я не эксперт в PYTHONPATH, но, похоже, он находится в середине sys.path, после яиц, но перед стандартными модулями.