После нескольких часов поисков прошлой ночью я нашел ответ об относительном импорте в python! Или, по крайней мере, простое решение. Лучший способ исправить это - вызвать модули из другого модуля. Скажем, вы хотите demo.py
импортировать myClass.py
. В папке myClass
в корне подпакетов им нужен файл, который вызывает два других. Из того, что я собираю, рабочий каталог всегда считается __main__
, поэтому, если вы протестируете импорт из demo.py
с помощью скрипта demo.py
, вы получите эту ошибку. Для иллюстрации:
Иерархия папок:
myClass/
main.py #arbitrary name, can be anything
test/
__init__.py
demo.py
src/
__init__.py
myClass.py
myClass.py:
def randomMaths(x):
a = x * 2
y = x * a
return y
demo.py:
from ..src import myClass
def printer():
print(myClass.randomMaths(42))
main.py:
import test.demo
demo.printer()
Если вы запускаете demo.py
в интерпретаторе, вы выдадите ошибку, но выполнение main.py
не будет. Это немного запутанно, но это работает: D