Maison > développement back-end > Tutoriel Python > Comment puis-je importer efficacement des packages frères et sœurs en Python sans utiliser les hacks « sys.path » ?

Comment puis-je importer efficacement des packages frères et sœurs en Python sans utiliser les hacks « sys.path » ?

Barbara Streisand
Libérer: 2024-12-14 15:54:11
original
545 Les gens l'ont consulté

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

Importations de packages frères et sœurs

Introduction

L'intégration de packages frères et sœurs et l'exécution de scripts à partir de différents répertoires peuvent être difficiles. Ce guide présente une solution détaillée qui évite les fameux hacks sys.path.

Configuration

Considérez la structure de répertoires suivante :

├── 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
Copier après la connexion

Solution

Étape 1 : Créer un fichier pyproject.toml

Dans votre répertoire racine, créez un fichier pyproject.toml avec le contenu minimal suivant :

[project]
name = "myproject"
version = "0.1.0"
description = "My small project"

[build-system]
build-backend = "flit_core.buildapi"
requires = ["flit_core >=3.2,<4"]
Copier après la connexion

Étape 2 : Utiliser un environnement virtuel (recommandé)

Créer et activer un environnement virtuel pour l'isolement et la gestion des dépendances.

Étape 3 : Installez votre Projet

Installez votre projet dans un état modifiable à l'aide de pip :

pip install -e .
Copier après la connexion

Étape 4 : Ajoutez mon projet. Préfixe

Dans les importations où les importations relatives ou absolues échouent, ajoutez le préfixe myproject à l'instruction d'importation :

from myproject.api.api import function_from_api
Copier après la connexion

Code Exemple

api.py :

def function_from_api():
    return 'I am the return value from api.api!'
Copier après la connexion

test_one.py :

from myproject.api.api import function_from_api

def test_function():
    print(function_from_api())

if __name__ == '__main__':
    test_function()
Copier après la connexion

Exécution du test

Accédez au répertoire des tests et exécutez test_one.py :

python .\myproject\tests\test_one.py
Copier après la connexion

Conclusion

Cette solution fournit un moyen propre et portable d'importer des packages frères sans manipulation de sys.path. En utilisant pyproject.toml et en installant votre projet de manière modifiable, vous pouvez vous assurer que les modifications apportées à vos scripts sont automatiquement reflétées dans le package installé. Cette approche rationalise le développement et simplifie la gestion de projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal