Импортировать модуль из другого модуля

1

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

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

test_app 
    main.py
    module_1
        __init__.py
        main.py

    module_2
        __init__.py
        main.py

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

  • 1
    Есть ли причина, по которой у вас нет! __ init__.py непосредственно под test_app?
  • 0
    @ Маке, что бы это делало?
Показать ещё 2 комментария
Теги:
module

5 ответов

1
Лучший ответ

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

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

python test_app/main.py

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

  • 2
    Нет необходимости устанавливать PYTHONPATH : «оператор import сначала просматривает содержащийся пакет, а затем ищет стандартный путь поиска модуля» ( руководство по Python ).
  • 0
    Но в этом случае пакет не содержит, так как test_app не содержит __init__.py .
3

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

2

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

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

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

1

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

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

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

0

конечно.

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

from module_2 import your_function, your_class

Ещё вопросы

Сообщество Overcoder
Наверх
Меню