Импортировать модуль из другого модуля - PullRequest
1 голос
/ 17 июня 2011

В основном я написал два модуля для моей программы Python.Мне нужен один модуль для импорта другого модуля.

Вот пример моей файловой структуры.

test_app 
    main.py
    module_1
        __init__.py
        main.py

    module_2
        __init__.py
        main.py

Main.py может импортировать любой из двух модулей, но мне нужноmodule_1 для импорта module_2, это возможно?

Ответы [ 5 ]

3 голосов
/ 17 июня 2011

Если вы запустили программу с test_app/main.py, вы можете просто использовать from module_1 import main в test_app/module_2/main.py файле.

2 голосов
/ 17 июня 2011

Если вы добавите (пустое) __init__.py в test_app, test_app будет пакетом. Это означает, что python будет искать модули / пакеты немного умнее.

Сделав это, в модуле 1 теперь вы можете написать import test_app.module2 (или import .. module2), и это работает.

(Этот ответ был объединен с другими комментариями и ответами здесь, следовательно, CW)

1 голос
/ 17 июня 2011

На этот вопрос ответили официальные документы Python, в разделе Ссылки внутри пакета . модули Python

Подмодули часто должны ссылаться друг на друга.Вам не нужно заботиться о PYTHONPATH, объявление относительного пути подойдет.Для вашего случая

просто введите «import .. module2» в module_1 / main.py

1 голос
/ 17 июня 2011

Да.Если переменная окружения PYTHONPATH установлена ​​на test_app, вы сможете импортировать module1 из module2 и наоборот.

Я предполагаю, что вы запускаете свою программу следующим образом:

python test_app/main.py

и программа импортирует module1.main, что, в свою очередь, импортирует module2.main.В этом случае нет необходимости изменять значение PYTHONPATH, поскольку Python уже добавил в него каталог test_app.См. Путь поиска модуля в документации по Python.

0 голосов
/ 17 июня 2011

точно.

В вашем модуле module_1.В любом файле:

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