Heim > Backend-Entwicklung > Python-Tutorial > Wie löse ich „ImportError: Kein Modul benannt…'-Probleme in Pytest aufgrund von Pfadproblemen?

Wie löse ich „ImportError: Kein Modul benannt…'-Probleme in Pytest aufgrund von Pfadproblemen?

Linda Hamilton
Freigeben: 2024-12-16 12:33:12
Original
952 Leute haben es durchsucht

How to Solve

PATH-Probleme mit pytest: „ImportError: Kein Modul benannt...“

Bei der Verwendung von pytest kommt es häufig zu ImportError-Ausnahmen aufgrund von Pfadproblemen. Dies kann insbesondere bei unterschiedlichen Betriebssystemen und Projektstrukturen der Fall sein. Lassen Sie uns dieses Problem angehen und mögliche Lösungen erkunden.

Conftest-Lösung (pytest < 7)

Eine effektive Möglichkeit, Pfadprobleme zu beheben, ist die Verwendung einer conftest.py-Datei. Pytest sucht während der Testsammlung nach Conftest-Modulen, um benutzerdefinierte Hooks und Fixtures zu sammeln. Indem Sie eine leere conftest.py-Datei im Stammverzeichnis Ihres Projekts platzieren (wo Sie pytest ausführen), fügt pytest automatisch das übergeordnete Verzeichnis zu sys.path hinzu und macht Ihre Anwendungsmodule für den Import verfügbar.

Beispiel:

Für eine Projektstruktur wie diese:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py
Nach dem Login kopieren

Fügen Sie einfach eine leere conftest.py-Datei zum Repo/ hinzu. Verzeichnis.

Pythonpath-Einstellung (pytest >= 7)

Für neuere Versionen von pytest (7 und höher) ist die Verwendung der Pythonpath-Einstellung eine bequemere Lösung. Dadurch können Sie sys.path direkt über die Pytest-Konfiguration ändern. Fügen Sie in Ihrer pyproject.toml- oder pytest.ini-Datei Folgendes hinzu:

[tool.pytest.ini_options]
pythonpath = ["."]
Nach dem Login kopieren

Dies ist ein saubererer Ansatz, der keinen benutzerdefinierten Code oder eine Manipulation von sys.path erfordert.

Sonstiges Überlegungen

Projektstruktur: Passen Sie die Platzierung der conftest.py-Datei oder die Pythonpath-Konfiguration basierend an auf Ihre Projektstruktur. Platzieren Sie beispielsweise in einem typischen src-basierten Layout conftest.py im src-Verzeichnis, nicht im Stammverzeichnis.

src-Layout: Seien Sie vorsichtig, wenn Sie src zu PYTHONPATH hinzufügen. Dies kann die Vorteile der Verwendung eines src-Layouts zunichte machen, da Sie am Ende den Repository-Code und nicht das installierte Paket testen.

Das obige ist der detaillierte Inhalt vonWie löse ich „ImportError: Kein Modul benannt…'-Probleme in Pytest aufgrund von Pfadproblemen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage