Warum wird von scipy import-räumliche arbeiten, während scipy.Geo funktioniert nicht nach dem import scipy?
Möchte ich scipy.spatial.distance.cosine
in meinem code. Kann ich den import der spatial
Submodul wenn ich etwas mache, wie import scipy.spatial
oder from scipy import spatial
, aber wenn ich einfach import scipy
aufrufen scipy.spatial.distance.cosine(...)
Ergebnisse in die folgende Fehlermeldung: AttributeError: 'module' object has no attribute 'spatial'
.
Was falsch ist mit dem zweiten Ansatz?
- und @falsetru gab gute Antworten, und Sie sollten akzeptieren, einer von Ihnen. Um zu erklären, warum dies der Fall ist für
scipy
insbesondere der Grund dafür, dass wir nicht importieren alle Unterpakete ist, dass es eine Menge von Ihnen, und viele haben große Erweiterung Module, die verbrauchen ziemlich viel Zeit, um zu laden. Die meisten Programme brauchen nicht alle von scipy geladen, so dass noch eine Menge zusätzlichen Aufwand, um alle Programme, wenn wir immer importiert werden alle Unterpakete. - Diese Antwort von "alKid" und "falsetru" sind sachlich nicht korrekt und eher irreführend. Der Grund liegt in der init Dateien von dem Paket. Die init von scipy nicht importieren Sie die Module während der init einige andere Pakete wie z.B. numpy importieren Ihr Module. Finden Sie bessere Antworten auf die doppelten thread: stackoverflow.com/questions/33379576/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Importieren ein Paket nicht importieren submodule automatisch. Sie müssen import-Submodul ausdrücklich.
Beispielsweise
import xml
nicht importiert Submodulxml.dom
Gibt es eine Ausnahme, wie
os.path
. (os
Modul selbst importieren Sie das Submodul in seinem Namensraum)Weil scipy ist eine Paket, kein Modul. Wenn Sie ein Paket importieren, die Sie eigentlich gar nicht laden Sie die Module im inneren, und damit
package.module
einen Fehler verursacht.Jedoch
import package.module
funktionieren würde, weil es das Modul lädt, nicht das Paket.Dies ist das standard-Verhalten für die meisten import-Anweisungen, aber es gibt ein paar Ausnahmen.
Hier ist der gleiche Fall für
urllib
in Python 3:Sehen? es gibt keine teilmodule gibt. Für den Zugriff auf die submodule, wir bitten für die submodule:
Hoffen, dass diese einfache Erklärung hilft!