Wpis z mikrobloga

Mam taką strukturę plików:

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 print
data 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
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
A sprobuj tak w printdata.py:


@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
  • Odpowiedz
@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ą?
  • Odpowiedz