Mein Python kann irgendwie keine Module im selben Verzeichnis finden. Was mache ich falsch? (Python2.7)
Ich habe also ein Verzeichnis '2014_07_13_test' mit zwei Dateien:
- test.py
- hallo.py.
wo hallo.py:
# !/usr/local/bin/python
# -*- coding: utf-8 -*-
def hello1():
print 'HelloWorld!'
und test.py:
# !/usr/local/bin/python
# -*- coding: utf-8 -*-
from hello import hello1
hello1()
Noch gibt mir Python
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 4, in <module>
ImportError: No module named hello
Was ist los mit dir?
import sys; sys.path
>>> import test
Antworten:
Ihr Code ist in Ordnung. Ich vermute, Ihr Problem besteht darin, wie Sie ihn starten.
Sie müssen Python aus Ihrem Verzeichnis '2014_07_13_test' starten.
Öffnen Sie eine Eingabeaufforderung und "cd" in Ihrem Verzeichnis "2014_07_13_test".
Zum Beispiel:
Wenn Sie nicht wie folgt in das Verzeichnis 'cd' können, können Sie es zu sys.path hinzufügen
In test.py:
Oder setzen / bearbeiten Sie den PYTHONPATH
Und alles sollte gut sein ...
... nun, es gibt einen kleinen Fehler mit Ihren 'shebang'-Zeilen (die erste Zeile in Ihren beiden Dateien), es sollte kein Leerzeichen zwischen dem' # 'und dem'! '
Es gibt einen besseren Shebang, den Sie verwenden sollten.
Außerdem benötigen Sie nicht für jede Datei die Shebang-Zeile ... nur diejenigen, die Sie als ausführbare Dateien von Ihrer Shell ausführen möchten.
quelle
Ändern Sie Ihren Import in test.py in:
quelle
from . import hello
from . import local_module
Ich hatte ein ähnliches Problem und löste es, indem ich das Verzeichnis der Datei explizit zur Pfadliste hinzufügte:
Danach hatte ich kein Problem beim Importieren aus demselben Verzeichnis.
quelle
Hier ist die generische Lösung, die ich verwende. Es löst das Problem beim Importieren aus Modulen im selben Ordner:
Setzen Sie dies oben auf das Modul, das den Fehler "Kein Modul mit dem Namen xxxx" anzeigt.
quelle
In meinem Fall konnte Python es nicht finden, weil ich den Code in ein Modul mit Bindestrichen eingefügt hatte, z
my-module
. Als ich es geändert habe, hatmy_module
es funktioniert.quelle
Ich bin auf dieses Problem gestoßen. Ich hatte drei Ordner im selben Verzeichnis, also musste ich angeben, welcher Ordner. Beispiel: aus dem Ordnerimport-Skript
quelle