Ich versuche, ein Modul aus einem anderen Verzeichnis zu importieren, das von demselben übergeordneten Element stammt. Ich habe den Code in Python 2.7 zu arbeiten, aber nicht in Python 3.5.Auflösen von gemischten Schrägstrichen beim Importieren eines Moduls
Ich bin in py_file.py Arbeits ===> H: /other/apple/work_here/py_file.py
Ich möchte total_text.py von ===> H importieren:/Sonstiges/Apfel /banana/total_text.py
Der Import funktioniert in Python 2.7, aber nicht in Python 3.5. In 3,5 I eine rote Wellenlinie unter Banane zu bekommen und wenn ich den Code der Fehler lautet: „Kein Modul namens‚Banane‘“
laufenimport sys
import os
os.chdir(os.path.join("H:\\", "other", "apple", "work_here"))
sys.path.insert(0, os.path.join(os.path.split(__file__)[0], ".."))
import banana.total_text
Um das Problem zu beheben, ausgeführt ich die folgenden Druck Aussagen in beiden Programmen und gefunden Ich bekomme gemischte Schrägstriche in Python 3.5-Programm.
In Python 2.7, erhalte ich:
Druck sys.path [0] =====> H: \ andere \ Apfel \ work_here .. # Hinweis: Es gibt eine \ nach dem e in hier ist das nicht aufgetaucht.
Druck os.listdir (sys.path [0]) =====> [u'banana 'u'work_here']
In Python 3.5 erhalte ich folgendes:
print sys.path [0] =====> H:/other/work_here .. # Beachten Sie, dass es ein \ nach dem e hier gibt, das nicht angezeigt wurde.
Druck os.listdir (sys.path [0]) =====> [ 'Apfel', 'work_here']
Ich suchte herum und eine teilweise fix gefunden: Durch os.path Zugabe. abspath (x) oder os.path.normpath (x) wo x = os.path.join (os.path.split (file) [0], "..") Ich habe es zwei Verzeichnisse zurück zu gehen H: \ andere ===> die Import-Anweisung funktioniert, wenn ich es schreiben: Import apple.banana.total_text
Mit der os.path.abspath() Version, die ich erhalten:
drucken (sys.path [0]) =====> H: \ andere
drucken (os.listdir (sys.path [0])) =====> ['apple', 'work_here']
Ich versuche, die Python 3.5-Version auf die gleiche Weise wie die Python 2.7-Version funktionieren zu lassen und zu verstehen, was dazu führen würde, dass sich 3.5 anders verhält.
überprüfen os.sep https://docs.python.org/2/library/os.html – Wyrmwood
Ich konnte die 3.5-Version zu arbeiten. Ich habe ersetzt: sys.path.insert (0, os.path.join (os.path.split (__ Datei __) [0], "..")) mit sys.path.insert (0, '..') – Oedipus