Python import : AttributeError: 'module' Objekt hat kein Attribut 'test'
Ich denke, das ist blödes problem, aber ich kann nicht herausfinden, warum bekomme ich die folgende
AttributeError: 'module' object has no attribute 'test'
beim laufen meinen test3.py.
Hier ist mein Projekt Baum :
.
├── __init__.py
├── test3.py
└── testdir
├── __init__.py
└── test.py
Meine test3.py :
#!/usr/bin/python
import testdir
if __name__ == "__main__":
print(testdir.test.VAR)
Meine test.py :
#!/usr/bin/python
import os
VAR=os.path.abspath(__file__)
Ich auch versucht zu importieren meiner VAR diese Weise :
from testdir.test import VAR
EDIT: das Jetzt funktioniert-Dank @user2357112 - aber ich würde immer noch gerne wissen, wie man das ganze importieren test.py Datei ohne from ... import ...
wenn es möglich ist. 🙂
Und ich versuchte eine import ..testdir
zu tun, eine relative importieren, aber ich habe einen SyntaxError
.
Und wenn ich versuche import testdir.test
ich eine NameError: name'test' is not defined
.
Wie könnte ich diese Datei importieren? Ich bin ein wenig verwirrt.
BEARBEITEN bis :
Ich entschuldige mich, wenn ich versuchte import testdir.test
ich auch geändert print(testdir.test.VAR)
zu print(test.VAR)
.
Das war das problem, mein schlechtes.
mit :
#!/usr/bin/python
import testdir.test
if __name__ == "__main__":
print(testdir.test.VAR)
Funktioniert es perfekt, obwohl ich beim importieren testdir.test
gemacht test
existieren allein (und nicht testdir.test
) im Rahmen.
Sorry für die Unannehmlichkeiten. :S
vAR
aktivierte gerne in Ihrem eigentlichen Datei?My bad, du hast Recht. Jetzt
from testdir.test import VAR
funktioniert, danke. Aber wie könnte ich den import der gesamten Datei ohne Verwendung einer from ... import ...
?import testdir.test
. Importieren eines Pakets nicht automatisch laden seine Submodule.Ich habe versucht, aber ich bekam einen Fehler.
InformationsquelleAutor vmonteco | 2015-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie
from .test import VAR
zu testdir/init.py. Dannimport testdir
im test3.py arbeiten könnte. Ich Stimme zu, es ist mehr ein workaround als Lösung.print testdir.VAR
Nein, es ist nicht 'dirty' per se zu setzen Einfuhren in die init-Datei, infact der name schon sagt ist es für die Initialisierung eines Pakets. Es bietet eine Art der Kapselung, in der die Nutzer das Paket nicht benötigen, um wissen über die interne Struktur und die Module des Pakets. Mit dieser sagte, ist der Import alles in init tun überfrachtet den namespace. So verwenden Sie es mit bedacht aus.
InformationsquelleAutor hspandher
Hinzufügen, ohne die ganze Datei mit der aus der Verwendung von import-Anweisung, die Sie verwenden können, execfile
InformationsquelleAutor dmr
Ich endlich gelingen, damit es funktioniert auf diese Weise :
Ich fälschlicherweise geändert
print(testdir.test.VAR)
zuprint(test.VAR)
wenn ich versuchte, mitimport testdir.test
. Also ich hatte diese Fehler.Mein bad.
InformationsquelleAutor vmonteco