Heim >Backend-Entwicklung >Python-Tutorial >Wie vermeide ich „sys.path'-Hacks beim Importieren aus Geschwisterpaketen?

Wie vermeide ich „sys.path'-Hacks beim Importieren aus Geschwisterpaketen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-09 12:10:13205Durchsuche

How to Avoid `sys.path` Hacks When Importing from Sibling Packages?

Adressierung von Geschwisterpaketimporten


Das Importieren von Modulen aus Geschwisterpaketen kann oft eine Herausforderung darstellen, wenn Skripte über die Befehlszeile ausgeführt werden. Um diese Schwierigkeiten zu lindern, präsentieren wir eine alternative Lösung, die die Notwendigkeit umständlicher sys.path.insert-Hacks überflüssig macht.


Der Ansatz


Das werden wir tun Packen Sie unseren Code in einen einzigen Ordner und strukturieren Sie ihn wie folgt folgt:


<br>└── myproject</p>
<pre class="brush:php;toolbar:false">├── api
│   ├── api_key.py
│   ├── api.py
│   └── __init__.py
├── examples
│   ├── example_one.py
│   ├── example_two.py
│   └── __init__.py
├── LICENCE.md
├── README.md
└── tests
    ├── __init__.py
    └── test_one.py


Zusätzlich erstellen wir ein Pyproject. toml-Datei im Stammordner, um die zu beschreiben package.


Installieren des Pakets


Um unser Paket für Importe verfügbar zu machen, installieren wir es in einem bearbeitbaren Zustand mit pip:

pip install -e .

Umgang mit Importen


Beim Importieren von Modulen aus unserem Paket stellen wir dem Import „myproject“ voran, wie in test_one.py gezeigt:< ;/p>

from myproject.api.api import function_from_api

Beachten Sie, dass dieses Präfix nur für Importe erforderlich ist, die ohne die Datei pyproject.toml und die Pip-Installation nicht funktionieren würden.


Ausführen der Skript


Wenn alle notwendigen Einstellungen vorhanden sind, können wir es tun Führen Sie unser Skript über die Befehlszeile aus:


python .myprojectteststest_one.py

Dies sollte das erwartete Ergebnis ausgeben:


I ist der Rückgabewert von api.api!

Fazit


Durch die Integration dieser Schritte haben wir das Problem des Imports von Geschwisterpaketen effektiv gelöst und können nun Skripts aus dem ausführen Befehlszeile, ohne auf sys.path-Hacks zurückzugreifen.

Das obige ist der detaillierte Inhalt vonWie vermeide ich „sys.path'-Hacks beim Importieren aus Geschwisterpaketen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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