for _ in range(3): print_data() Jak uruchomię printdata.py to działa bez problemu. import bez problemu.
Ale gdy uruchomię start.py to wyrzuca: ModuleNotFoundError: No module named 'data'
Czyli start.py importuje dobrze printdata ale print_data nie importuje już data mimo, że jak uruchomię sam ten plik to działa bez problemu. Powinienem jakoś inaczej importować te pliki?
@scorpio18k Nie jestem pewien, ale print_data.py powinieneś uruchamiać jako moduł, żeby wiedział, że jest częścią paczki, a nie głównym skryptem. Co daje python -m print_data.py kiedy jest tam data z kropką?
IMPORT
|
+-- utils
| |
| +-- data.py
| +-- print_data.py
|
+-- start.py
start.py:
from utils.print_data import print_data
for _ in range(3):
print_data()
printdata.py:
from data import DATA
def print_data():
print(DATA)
if __name__ == "__main__":
print_data()
start.py:
from utils.print_data import print_data
for _ in range(3):
print_data()
Jak uruchomię printdata.py to działa bez problemu. import bez problemu.
Ale gdy uruchomię start.py to wyrzuca:
ModuleNotFoundError: No module named 'data'
Czyli start.py importuje dobrze printdata ale print_data nie importuje już data mimo, że jak uruchomię sam ten plik to działa bez problemu. Powinienem jakoś inaczej importować te pliki?
#python
from .data import DATA
def print_data():
@ch1nczyk: No to wtedy start.py działa ale jak uruchomię printdata.py to wyrzuca:
ImportError: attempted relative import with no known parent package
Czyli w pierwszym przykładzie to start nie działa a
__init__.py
?@Yelonek: Tak, dodałam i do głównego katalogu i do utils. Dalej to samo
print_data.py
powinieneś uruchamiać jako moduł, żeby wiedział, że jest częścią paczki, a nie głównym skryptem.Co daje
python -m print_data.py
kiedy jest tam data z kropką?