Разрешение зависимости в python между модулями - PullRequest
0 голосов
/ 28 марта 2009

Я новичок в питоне. У меня есть два модуля. Модель М1 и модуль м2. Из m2 мне нужно сослаться на m1 и m2, а m1 находится в двух разных местах на диске.

Когда я пытаюсь импортировать m1 перед выполнением m2, конечно, он говорит, что не может найти m1. Как я могу указать моему переводчику местоположение m1.

Спасибо J

Ответы [ 3 ]

3 голосов
/ 28 марта 2009

Это не полностью ясно, в чем заключается ваша конкретная проблема (опишите подробнее!), Но вы можете найти их полезными (дальнейшее поиск в Google поможет вам найти конкретные ответы для ваших конкретных потребностей):

  • Переменная среды PYTHONPATH
  • .pth файлы в каталогах, которые отображаются в PYTHONPATH
  • Управление sys.path перед импортом

Однако, если m2 зависит от m1 и они распределены вместе, возможно, лучше разместить их в одном дереве каталогов, используя пакетов .

2 голосов
/ 28 марта 2009

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

0 голосов
/ 28 марта 2009

То, что возможно, зависит от деталей модулей, но обычно вы можете просто импортировать конкретные объекты, необходимые из модулей, например:

в B.py

from A import classA1, funA1

в A.py

from B import classB1, funB1

так что вы импортируете только то, что нужно. Если зависимости более сложные, это может не сработать, но в целом это должно быть возможно (если только у вас нет реальных взаимных рекурсивных зависимостей на уровне объектов, которые вы не можете разрешить!).

...