Ich versuche ein Modul (venues
) aus einer IPython-Shell zu importieren. Das Modul venues
wird korrekt importiert, versucht sich dann jedoch selbst, ein Modul mit dem Namen makesoup
zu importieren, und führt dies nicht aus.Python 3: Modul im selben Verzeichnis wie das Skript: "ImportError: Kein Modul namens"
Ich bin im Verzeichnis ~
und versuche, die venues.py
Datei im Unterverzeichnis processors
zu importieren. Die Datei makesoup.py
befindet sich auch im Unterverzeichnis processors
, was bedeutet, dass jedes Python-Skript in der Nähe es finden könnte, richtig?
In [1]: import processors.venues
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-765135ed9288> in <module>()
----> 1 import processors.venues
~/processors/venues.py in <module>()
7 """
8
----> 9 import makesoup
10 import re
11
ImportError: No module named 'makesoup'
Ich habe eine leere __init__.py
in beide die ~
und processors
Verzeichnisse, ohne Erfolg hinzugefügt.
Hinweis: Das makesoup
Modul ist korrekt importiert, wenn ich in processors
bin, aber ich weiß, dass dies nicht die einzige Möglichkeit ist, die es funktionieren sollte.
Danke Kevin. Ich verstehe jedoch nicht, warum diese Lösungen es unmöglich machen, 'locations.py' direkt zu betreiben. Kannst du mir sagen warum? –
Wenn Sie einen expliziten relativen Import verwenden (die erste Option, die ich aufgelistet habe), muss die magische Variable "__package__" gesetzt sein, aber 'python' wird dies nicht tun, wenn Sie ein Skript direkt ohne '-m' ausführen. Wenn Sie einen absoluten Import verwenden, wird Python wahrscheinlich das 'processors' -Paket nicht finden können, da es sich nicht im selben Verzeichnis wie das Skript befindet. Auch hier wird "-m" das beheben. – Kevin