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
Freigeben: 2024-12-14 15:54:11
Original
467 Leute haben es durchsucht

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
Nach dem Login kopieren

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"]
Nach dem Login kopieren

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 .
Nach dem Login kopieren

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
Nach dem Login kopieren

Code Beispiel

api.py:

def function_from_api():
    return 'I am the return value from api.api!'
Nach dem Login kopieren

test_one.py:

from myproject.api.api import function_from_api

def test_function():
    print(function_from_api())

if __name__ == '__main__':
    test_function()
Nach dem Login kopieren

Test ausführen

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

python .\myproject\tests\test_one.py
Nach dem Login kopieren

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!

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