Je veux importer et utiliser mon propre package dans le répertoire supérieur avec Python, mais je n'ai pas pu trouver de solution pour importer par chemin relatif ou ne pas vouloir changer sys.path dans le script, je vais donc l'écrire.
En conclusion, créez setup.py
et utilisez la commande pip install -e .
.
Exemple de configuration d'annuaire:
project
+ mypackage
| + __init__.py
| + module_a.py
+ program_main
| + executor
| + executor.py
| + tests
| + executor_test.py
ʻJe veux importer et utiliser mon propre paquet appelé mypackage
dans le dossier supérieur du point de vue de executor.py`.
Dans mon cas, il y avait plusieurs répertoires pour les services Lambda sur AWS et LambdaLayer a été placé dans un dossier de niveau supérieur en tant que processus commun, de sorte que LambdaLayer ne pouvait pas être importé correctement à partir des fonctions Lambda localement.
De plus, les services Lambda et la couche Lambda ont une structure de répertoires qui fonctionne correctement dans l'environnement déployé, et vous devez faire attention au chemin lorsque vous effectuez des tests unitaires avec CICD.
project
+ layers
| + my_layer_1
| + ...
| + ...
+ lambda
| + service_1
| + handler.py
| + serverless.yml
| + requirements.txt
| + env
| + ...
| + tests
| + ...
| + ...
+ setup.py
Vous pouvez gérer les packages avec setup.py
. Placez le setup.py
suivant dans le répertoire racine.
from setuptools import setup, find_packages
setup(name='myproject', version='1.0', packages=find_packages())
find_packages () trouvera automatiquement le paquet où __init __. py
existe. Si le chemin ne fonctionne pas ou n'est pas trouvé, vous pouvez jouer avec package_dir
en plus de packages
ou vérifier si __init __. Py
existe.
Après cela, installez votre propre package en exécutant la commande suivante dans le répertoire racine.
pip install -e .
-e Référence
e, --editable <path/url>
Install a project in editable mode (i.e. setuptools “develop mode”) from a local project path or a VCS url.
Si vous spécifiez -e, lorsque vous éditez et enregistrez votre propre package, il reconnaîtra automatiquement les modifications, vous n'avez donc pas besoin de réinstaller votre propre package (pip install).
https://stackoverflow.com/questions/17155804/confused-about-the-package-dir-and-packages-settings-in-setup-py
Recommended Posts