Zgadłeś, jak to zrobić, ale mogę uczynić to nieco bardziej formalnym i dać (mam nadzieję) lepsze wyjaśnienie niż to, które znalazłeś gdzie indziej. Jeśli chcesz modularyzować import, który w zależności od filozofii kodowania może być dobrym lub złym pomysłem samym w sobie (przezroczystość a ponowne użycie kodu), niezależnie od tego, czy import ma miejsce w __init__.py
, możesz zaimportować import z innego skryptu. Na przykład:
"""import_scripts.py"""
import numpy as np
import scipy as sp
...
"""actual_code.py"""
from import_scripts import *
# np and sp are now in scope
Import z __init__.py
jest w większości takie same, wystarczy użyć tradycyjnie względną importu zamiast jeśli masz dostępu do niego z tego samego modułu:
# To import form __init__
from . import *
Ważne, aby pamiętać jednak, że Tego rodzaju importowanie będzie działać tylko wtedy, gdy uruchomisz te skrypty python jawnie jako moduły, a nie jako skrypty. To znaczy:
python -m foo
zamiast
python foo.py
ważna, ale subtelną różnicę.
Nadzieję, że pomaga. Daj mi znać, jeśli masz więcej pytań.
+1 Dzięki za subtelne wyróżnienie! – ksindi