Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Geschwisterpakete effektiv in Python importieren, ohne „sys.path'-Hacks zu verwenden?

Wie kann ich Geschwisterpakete effektiv in Python importieren, ohne „sys.path'-Hacks zu verwenden?

Barbara Streisand
Barbara StreisandOriginal
2024-12-14 15:54:11469Durchsuche

How Can I Effectively Import Sibling Packages in Python Without Using `sys.path` Hacks?

Importe von Geschwisterpaketen

Einführung

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.

Einrichtung

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

Lösung

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

Code Beispiel

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()

Test ausführen

Navigieren Sie zum Testverzeichnis und führen Sie es aus test_one.py:

python .\myproject\tests\test_one.py

Fazit

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!

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