Maison >développement back-end >Tutoriel Python >Comment éviter les piratages de « sys.path » lors de l'importation à partir de packages frères et sœurs ?

Comment éviter les piratages de « sys.path » lors de l'importation à partir de packages frères et sœurs ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 12:10:13199parcourir

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

Résolution des importations de packages frères et sœurs


L'importation de modules à partir de packages frères peut souvent poser des problèmes lors de l'exécution de scripts à partir de la ligne de commande. Pour atténuer ces difficultés, nous présentons une solution alternative qui élimine le besoin de hacks maladroits de sys.path.insert.


L'approche


Nous allons regroupez notre code dans un seul dossier et structurez-le comme suit :


<br>└── monprojet</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


De plus, nous allons créer un pyproject. toml dans le dossier racine pour décrire le package.


Installation du package


Pour rendre notre package disponible pour les importations, nous allons l'installer dans un état modifiable en utilisant pip:

pip install -e .

Gestion des importations


Lors de l'importation de modules à partir de notre package, nous préfixerons l'importation avec monprojet., comme démontré dans test_one.py :< ;/p>

depuis l'importation de monprojet.api.api function_from_api

Notez que ce préfixe est nécessaire uniquement pour les importations qui ne fonctionneraient pas sans le fichier pyproject.toml et l'installation pip.


Exécuter le Script


Avec toute la configuration nécessaire en place, nous pouvons exécuter notre script à partir de la ligne de commande :


python .myprojectteststest_one.py

Cela devrait afficher le résultat attendu :


Je suis la valeur de retour de api.api!

Conclusion


En incorporant ces étapes, nous avons résolu efficacement le problème des importations de packages frères et pouvons désormais exécuter des scripts à partir du ligne de commande sans recourir aux hacks sys.path.

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