Добавить отдельный модуль в путь поиска импорта Python? - PullRequest
2 голосов
/ 23 марта 2019

Если я установлю PYTHONPATH для какого-то пути /path/to/modules/, то путь будет добавлен к sys.path, и я могу импортировать модули / пакеты, содержащиеся в /path/to/modules/.

Однако, если мне нужен только доступ к одному модулю / пакету, то добавление /path/to/modules/mymod.py или /path/to/modules/mypackage/ к sys.path не работает.

Так есть ли способ добавить только один модуль / пакет в путь поиска импорта, вместо добавления всего родительского каталога?

Я спрашиваю, потому что мне нужно импортировать один пакет, установленный в /usr/lib/python3/dist-packages/, из виртуальной среды, и я бы предпочел не предоставлять виртуальной среде доступ ко всем модулям / пакетам, установленным по этому пути. (Пакет имеет сложный процесс сборки и не может быть легко установлен в виртуальной среде.)

Я прочитал https://stackoverflow.com/a/67692/, но мне интересно, можно ли вообще включить пакет в путь поиска импорта, чтобы пакет (и содержащиеся в нем модули) можно было импортировать нормально.

1 Ответ

0 голосов
/ 23 марта 2019

Такого пути нет. Если вы хотите импортировать модуль, вы должны добавить его родительский каталог до sys.path. Но вы можете удалить его позже:

sys.path.append('/usr/lib/python3/dist-packages/')
import mypackage
del sys.path[-1]
...