#import #python-3.7
#импорт #python-3.7
Вопрос:
У меня возникли проблемы с выполнением относительного импорта из импортированного скрипта.
У меня есть структура сценария примерно так:
script1.py
dirname1/
dirname2/
src/
script2.py
__init__.py
util/
script3.py
__init__.py
Я запускаю скрипт 1 из командной строки. Вот так:
python script1.py
У меня есть сценарий импорта скрипта script1 2 следующим образом:
import dirname1.dirname2.src.script2
Когда я затем пытаюсь импортировать script3 из script2, у меня возникают проблемы.
Я импортирую этот скрипт следующим образом:
import util.script3
И тогда я получаю сообщение об ошибке этот модуль не найден:
ModuleNotFoundError: No module named 'util'
Я пытался это сделать
import .util.script3
однако я получаю синтаксическую ошибку…
Это действительно работает, когда я импортирую все, что относится к верхнему скрипту. Но я предпочел бы иметь возможность импортировать относительно файла, который выполняет импорт.
Ответ №1:
Один из способов сделать это — поместить в dirname1/dirname2/src/util/__init__.py
следующее:
from .script3 import *
Затем в dirname1/dirname2/src/__init__.py
put,
from .util import *
from .script2 import *
Затем вы можете импортировать все свои файлы script1.py
,
выполнив команду import .util
from dirname1.dirname2.src import *
Тогда все команды доступны
commandInScript3()
Редактировать
Или, возможно, script1.py
вы можете сделать
from dirname1.dirname2.src import script2,util
util.commandInScript3()
script2.cmmandInScript2()