Die Integration von Geschwisterpaketen und das Ausführen von Skripten aus verschiedenen Verzeichnissen kann eine Herausforderung sein. Dieser Leitfaden stellt eine detaillierte Lösung vor, die die berüchtigten sys.path-Hacks vermeidet.
Beachten Sie die folgende Verzeichnisstruktur:
├── LICENSE.md ├── README.md ├── api │ ├── __init__.py │ ├── api.py │ └── api_key.py ├── examples │ ├── __init__.py │ ├── example_one.py │ └── example_two.py └── tests │ ├── __init__.py │ └── test_one.py
Schritt 1: Erstellen Sie eine pyproject.toml-Datei
In Ihrem Erstellen Sie im Stammverzeichnis eine pyproject.toml-Datei mit den folgenden Mindestinhalten:
[project] name = "myproject" version = "0.1.0" description = "My small project" [build-system] build-backend = "flit_core.buildapi" requires = ["flit_core >=3.2,<4"]
Schritt 2: Verwenden Sie eine virtuelle Umgebung (empfohlen)
Erstellen und aktivieren Sie eine virtuelle Umgebung für Isolation und Abhängigkeitsmanagement.
Schritt 3: Installieren Sie Ihre Projekt
Installieren Sie Ihr Projekt im bearbeitbaren Zustand mit pip:
pip install -e .
Schritt 4: Fügen Sie mein Projekt hinzu. Präfix
Fügen Sie bei Importen, bei denen relative oder absolute Importe fehlschlagen, das Myproject-Präfix zur Importanweisung hinzu:
from myproject.api.api import function_from_api
api.py:
def function_from_api(): return 'I am the return value from api.api!'
test_one.py:
from myproject.api.api import function_from_api def test_function(): print(function_from_api()) if __name__ == '__main__': test_function()
Navigieren Sie zum Testverzeichnis und führen Sie es aus test_one.py:
python .\myproject\tests\test_one.py
Diese Lösung bietet eine saubere und portable Möglichkeit, Geschwisterpakete ohne sys.path-Manipulation zu importieren. Durch die Verwendung von pyproject.toml und die bearbeitbare Installation Ihres Projekts können Sie sicherstellen, dass Änderungen an Ihren Skripten automatisch im installierten Paket widergespiegelt werden. Dieser Ansatz rationalisiert die Entwicklung und vereinfacht das Projektmanagement.
Das obige ist der detaillierte Inhalt vonWie kann ich Geschwisterpakete effektiv in Python importieren, ohne „sys.path'-Hacks zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!