Sie haben den richtigen Weg, dies zu tun, aber ich kann dies ein wenig formeller machen und geben (hoffentlich) eine klarere Erklärung als die, die Sie an anderer Stelle gefunden. Wenn Sie Importe modularisieren möchten, was abhängig von Ihrer Codierphilosophie an sich eine gute oder schlechte Idee sein kann (Transparenz vs. Wiederverwendung von Code), können Sie Ihre Importe aus einem anderen Skript importieren, unabhängig davon, ob die Importe in __init__.py
erfolgen. Zum Beispiel:
"""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
von __init__.py
zu importieren ist meist die gleiche, die Sie verwenden nur traditionell einen relativen Import statt, wenn Sie es aus dem gleichen Modul sind erreichbar:
# To import form __init__
from . import *
So wichtig zu beachten, dass Diese Art von Importen funktioniert nur, wenn Sie diese Python-Skripte explizit als Module und nicht als Skripte ausführen. Das bedeutet:
python -m foo
statt
python foo.py
wichtig, aber feinen Unterschied.
Hoffe, dass hilft. Lass es mich wissen, wenn du weitere Fragen hast.
+1 Danke für die subtile Unterscheidung! – ksindi