Cześć,
Mam taką strukturę plików:
foo/
__init__.py
fileA.py
fileB.py
submodule/
__init__.py
file1.py
file1.py
from ..fileB import fileBfun
fileBfun()
file1_var = "lol"
fileB.py
def fileBfun():
return "Foo"
fileA.py
from submodule.file1 import file1_var
print(file1_var)
Uruchamiajac fileA.py dostaje: ImportError: attempted relative import beyond top-level package
Z tego co rozumiem to python nie traktuje katalogu z którego uruchomilismy plik .py za moduł, dlatego powstaje ten błąd.
Rozwiązanie na które sam wpadłem (a nie widziałem go na stacku, byś może ze względu na jego radykalność xD) to "Podniesienie" main.py wyżej o jeden folder, tak żeby inne pliki byly w modulach "pod" main.py. W wyżej wymienionym przypadku byłoby to:
main_is_the_boss/
fileA.py
foo/
__init__.py
fileB.py
submodule/
__init__.py
file1.py
teraz wszystko działa.
Czy da się rozwiązać ten problem bez zmieniania struktury katalogów?
PS.
Czy zamierzają to zmienić żeby katalog z którego uruchamiany jest program był traktowany jak moduł i nie powstawał taki błąd xD?