Python импорт файлов из 3 слоев - PullRequest
0 голосов
/ 09 марта 2020

У меня следующая файловая структура

home/user/app.py
home/user/content/resource.py
home/user/content/call1.py
home/user/content/call2.py

Я импортировал resources.py в app.py, как показано ниже:

import content.resource

Кроме того, я импортировал call1 и call2 в ресурс .py

import call1
import call2

Требуется запустить два теста по отдельности.

  1. запустить app.py
  2. запустить resource.py

Когда я запускаю app.py, он говорит, что не может найти call1 и call2. При запуске resource.py файл работает без проблем. Как запустить файл app.py python для вызова функций импорта в resource.py, а также файлов call1.py и call2.py?

Все 4 файла, имеющие __init__ main function.

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Вы должны импортировать call1 и call2 в app.py, если вы хотите вызвать их там.

0 голосов
/ 09 марта 2020

В ваших __init__ файлах просто создайте такой список для каждой инициализации, поэтому для вашего пользователя __init__: __all__ = ["app", "content"]

И для вашего контента __init__: __all__ = ["resource", "call1", "call2"]

Первая попытка: export PYTHONPATH=/home/user <- Убедитесь, что это правильный абсолютный путь. </p>

Если это не решит проблему, попробуйте добавить к пути также content.

try: export PYTHONPATH=/home/user/:/home/user/content/

Это определенно должно работать.

Затем вы импортируете так:

import user.app

import user.content.resource

ПРИМЕЧАНИЕ

Все, что вы хотите использовать, вы должны импортировать в каждый файл. Не беспокойтесь об импорте в __init__. Просто укажите все модули, которые __init__ включает, выполнив __all__ = []

...