Python-выполнение абсолютного импорта из подпапки
в основном я задаю тот же вопрос, что и этот парень:Как сделать относительный импорт в Python?
но никто не дал ему правильного ответа. Учитывая, что вы находитесь внутри подпапки, и вы хотите перейти в каталог, а затем в другую подпапку, делать то, что они предложили, не работает (как указал ОП в своих комментариях к их ответам).
Я знаю, что вы можете сделать это с помощью функции sys.путь, но я бы предпочел уборщика метод.
пример:
App
__init__.py
Package_A
--__init__.py
--Module_A.py
Package_B
--__init__.py
--Module_B.py
как импортировать Module_A в Module_B?
3 ответов
main.py
setup.py
app/ ->
__init__.py
package_a/ ->
__init__.py
module_a.py
package_b/ ->
__init__.py
module_b.py
- запустить
python main.py
. -
main.py
тут:import app.package_a.module_a
-
module_a.py
тутimport app.package_b.module_b
альтернативно 2 или 3 может использовать:from app.package_a import module_a
это будет работать до тех пор, пока у вас есть app
в вашем PYTHONPATH. main.py
может быть где-то.
Итак, вы пишете setup.py
для копирования (установки) всего пакета приложений и подпакетов в папки python целевой системы и main.py
для сценария целевой системы папки.
Если вы импортируете Module_B в приложение, вы бы
Module_B.py: импорт модуль
App.py (который также импортирует ModuleA, который теперь по умолчанию в вашем Pythonpath)
import Module_B.Module_B
Другой альтернативой является обновление __init__.py (в папке Module_A/App) для:
import os
import sys
sys.path.extend('%s../' % os.getcwd())
import ModuleA
Другой альтернативой является добавление вашей папки в среду PYTHONPATH var.