Как бороться с модулями, распределенными по каталогам? - PullRequest
2 голосов
/ 29 марта 2012

У меня есть проект, в котором у меня есть каталог для каждого аспекта моего проекта, и я сталкиваюсь с проблемами импорта. А именно, импорт вещей становится неприятной комбинацией sys.path.append() s и PYTHONPATH хакерских атак.

Как проекты, которые распределены по нескольким каталогам, обычно имеют дело с такого рода вещами?

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Если у вас есть каталоги для каждого модуля и вы можете поместить их в один модуль, то самое простое решение - использовать пакеты, например

myproject
    __init__.py
    mymodule1
        __init__.py
    mymodule2
        __init__.py

так что вы можете импортировать как

from myproject import mymodule1 etc

если вы не можете хранить все каталоги в одном дереве, а не обрабатывать их как отдельные проекты / библиотеки, в этом случае вы должны установить их для исправления пути к Python, используя distutils и т. Д., Прочитайте this

3 голосов
/ 29 марта 2012

Я бы настроил виртуальную среду для своего проекта, а затем установил все мои модули в ту среду, где они были бы найдены обычным процессом Python import.

Этотребует обновления виртуальной среды при внесении изменений в модули, но при условии правильной настройки setup.py это часто так просто, как:

$ cd /path/to/myproject
$ easy_install .

Кроме того, вам не нужно разбираться с и PYTHONPATH и sys.path.Предполагая конечное число модулей, вы можете просто создать сценарий оболочки, который настроит PYTHONPATH соответствующим образом, а затем ввести его при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...