В основном я написал два модуля для моей программы Python. Мне нужен один модуль для импорта другого модуля.
Вот пример моей файловой структуры.
test_app
main.py
module_1
__init__.py
main.py
module_2
__init__.py
main.py
Main.py
может импортировать один из двух модулей, но мне нужно module_1
импортировать module_2
, возможно ли это?
Да. Если для переменной среды PYTHONPATH
установлено значение test_app
, вы можете импортировать module1
из module2
и наоборот.
Я предполагаю, что вы запускаете свою программу следующим образом:
python test_app/main.py
и что программа импортирует module1.main
, которая, в свою очередь, импортирует module2.main
. В этом случае нет необходимости изменять значение PYTHONPATH
, так как Python уже добавил к нему каталог test_app. См. Раздел Модуль поиска в модуле в документах Python.
PYTHONPATH
: «оператор import
сначала просматривает содержащийся пакет, а затем ищет стандартный путь поиска модуля» ( руководство по Python ).
__init__.py
.
Если вы запустили свою программу из test_app/main.py
, вы можете просто использовать from module_1 import main
в test_app/module_2/main.py
файле.
Если вы добавите (пустой) __init__.py
в test_app, test_app будет пакетом. Это означает, что python будет искать модули/пакеты немного умнее.
Сделав это, в модуле 1 вы можете теперь написать import test_app.module2
(или import .. module2
), и он работает.
(Этот ответ был объединен из других комментариев и ответов здесь, следовательно, CW)
На этот вопрос задавали ответ официальные документы python, в разделе Intra- Список ссылок. модули python
Подмодулы часто должны ссылаться друг на друга. Вам не нужно заботиться о PYTHONPATH, объявление об относительном пути. Для вашего случая,
просто введите "import.. module2" в module_1/main.py
конечно.
В модуле module_1. В любом файле:
from module_2 import your_function, your_class