На высоком уровне структура моего проекта выглядит следующим образом.
dir/
moduleA/
__init__.py
file1.py
file2.py
main.py
file2.py содержит некоторую глобальную переменную, которую я импортирую в file1.py
# --- file2.py schema ---
SOME_GLOBAL_VARIABLE = 1
.
# --- file1.py schema ---
from moduleA.file2 import SOME_GLOBAL_VARIABLE
class MyClass():
def __init__(self):
self.some_attr = SOME_GLOBAL_VARIABLE
def run():
print(self.some_attr)
Когда я запускаю main.py ниже, который создает экземпляр MyClass, код запускается без ошибок.
# --- main.py ---
from moduleA.file1 import MyClass
x = MyClass()
x.run()
Однако, когда я открываю открытую консоль Python иВыполните ниже для импорта MyClass из file1.py Я получаю ошибку импорта, что нет модуля с именем moduleA.
from moduleA.file1 import MyClass
# (... some traceback statements)
from moduleA.file2 import SOME_GLOBAL_VARIABLE
ModuleNotFoundError: No module named 'moduleA'
Как это возможно, когда Python явно находит moduleA / file1.py, в противном случае он не может попытаться выполнить строку
from moduleA.file2 import SOME_GLOBAL_VARIABLE
Мне кажется странным, что он работаетбез ошибок, когда я запускаю скрипт main.py.
Полагаю, это связано с моим отсутствием понимания того, как Python точно импортирует модули, поэтому любая помощь очень ценится.Я попытался добавить файл init .py в moduleA, но это не решило проблему.
В случае, если эта информация актуальна, путь some_path / dir находится на моем PYTHONPATH.