Es fällt mir schwer zu verstehen, wie der Modulimport in Python funktioniert (ich habe es auch noch nie in einer anderen Sprache gemacht).
Nehmen wir an, ich habe:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
Jetzt versuche ich so etwas zu bekommen:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
Ich mache jedoch definitiv etwas falsch, da Python nicht sehen kann, dass myapp
es sich um ein Modul handelt:
ImportError: No module named myapp
import
in meinem zu verwenden,TestCase.py
aber es gab mir immer noch den gleichen Fehler. Ich nehme an, es liegt daran, dass es sich in einem Unterverzeichnis des__init__.py
?from ... import ...
richtige verwenden?from myapp.tests import TestCase from a script outside myapp. If you're running
python TestCase.py` im Testordner ausführe, können Sie keine relativen Importe durchführenfrom fodername import file_name_of_my_py_code
, aber als ich versuchte, auf das darin definierte Objekt zuzugreifenfile_name_of_my_py_code.py
, heißt esNameError: name 'ClassName' is not defined
Die Funktion
import
sucht nach Dateien in Ihrer PYTHONPATH-Umgebung. Variable und Ihr lokales Verzeichnis. Sie können also entweder alle Ihre Dateien im selben Verzeichnis ablegen oder den eingegebenen Pfad in ein Terminal exportieren ::quelle
export
wir haben "Set PYTHONPATH =% PYTHONPATH%; C: \ path_to_myapp \ myapp \ myapp \"Pfad exportieren ist ein guter Weg. Eine andere Möglichkeit besteht darin, Ihrem Standort für Site-Pakete eine .pth hinzuzufügen. Auf meinem Mac speichert mein Python die unten gezeigten Site-Pakete in / Library / Python
Ich habe eine Datei mit dem Namen awesome.pth unter /Library/Python/2.7/site-packages/awesome.pth erstellt und in die Datei den folgenden Pfad eingefügt, der auf meine fantastischen Module verweist
quelle
Du kannst es versuchen
weil Ihr Projektname mit myapp.py identisch ist, wodurch zuerst das Projektdokument durchsucht wird
quelle
In Ihrem ersten myapp-Verzeichnis können Sie eine setup.py-Datei hinzufügen und zwei Python-Codes in setup.py hinzufügen
Verwenden Sie in Ihrem ersten myapp-Verzeichnis in der Befehlszeile pip install -e. um das Paket zu installieren
quelle
pip install
Unter Windows 10 wird standardmäßig in "Programme / PythonXX / Lib / Site-Pakete" installiert. Dies ist ein Verzeichnis, für das Administratorrechte erforderlich sind. Daher habe ich mein Problem behoben, indem ich pip install als Administrator ausgeführt habe (Sie müssen die Eingabeaufforderung als Administrator öffnen, auch wenn Sie mit einem Administratorkonto angemeldet sind). Es ist auch sicherer, pip von Python aus aufzurufen.zB
python -m pip install <package-name>
statt
pip install <package-name>
quelle
In meinem Fall war es eine Überraschung zwischen Windows und Python, obwohl Windows-Dateinamen nicht zwischen Groß- und Kleinschreibung unterscheiden, ist der Python-Import. Wenn Sie also eine
Stuff.py
Datei haben, müssen Sie diesen Namen unverändert importieren.quelle
Du brauchst
In allen Ordnern mit Code, mit denen Sie interagieren müssen. Sie müssen bei jedem Import den Namen des obersten Ordners Ihres Projekts angeben, auch wenn sich die zu importierende Datei auf derselben Ebene befindet.
quelle