import

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Bin schon seit Jahren bei Python, wurde aber dennoch letztens überrascht.

Wieso funktioniert z.B.

Code: Alles auswählen

from sklearn import cluster
aber

Code: Alles auswählen

import sklearn
sklearn.cluster
nicht?

Die Python-Doku über import hat mir bis jetzt nicht zur Klarheit verholfen.

Liebe Grüße!
PS: Die angebotene Summe ist beachtlich.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Üpsilon: Unterpakete werden nicht automatisch importiert, wenn man das Hauptpaket importiert. So wird nur das importiert, was auch gebraucht wird.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

sklearn.cluster funktioniert nur, wenn zuvor in sklearn ein import cluster gemacht wurde. Der Punktoperator sorgt nicht automatisch dafür, dass ein Untermodul (oder -paket) verfügbar ist. Dies funktioniert grundsätzlich nur beim import-Statement, d.h. die Angabe von import sklearn.cluster tut das, was du erwartest.
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Verstehe ich das richtig:
Mit dem Punkt kann man Werte aus einem Modul holen, nicht aber Unterpackages aus einem Package.
Außer beim import, wo man den Punkt benutzt, um den "Pfad" zum Modul anzugeben.
PS: Die angebotene Summe ist beachtlich.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Genau. Es ist etwas verwirrend durch Module wie os welches sein untermodul path Gleich mit importiert.
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Okay dankeschön :D
PS: Die angebotene Summe ist beachtlich.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Üpsilon hat geschrieben:Mit dem Punkt kann man Werte aus einem Modul holen, nicht aber Unterpackages aus einem Package.
Wie gesagt: Wenn das Unterpackage den Import bereits in __init__.py getätigt hat, dann ist das kein Thema. Dann funktioniert auch dies:

Code: Alles auswählen

import spam
print(spam.ham.eggs.get_foo())
Antworten