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.
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
É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"]
É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 .
É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
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()
Accédez au répertoire des tests et exécutez test_one.py :
python .\myproject\tests\test_one.py
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!