Gérez les packages d'exécution Python et les packages d'environnement de développement avec Poetry
Utiliser Poetry pour gérer les packages PyPI semblait être plus pratique que d'utiliser requirements.txt de la manière suivante:
- Vous pouvez gérer les packages utilisés dans l'environnement de développement / production séparément (comme les dépendances de npm dev)
- Vous ne pouvez gérer que les packages dont le produit dépend directement.
- La version du package qui dépend du package dépendant est gérée par poetry.lock, et la version du package dépendant ne monte pas et reste bloquée (comme npm, package-lock.json, yarn.lock). )
- Vous pouvez mettre à niveau les packages dépendants avec une seule commande
--virtualenv.in-project Si true est défini, venv sera utilisé pour installer le paquet dans le répertoire .venv (le répertoire .venv est également automatiquement reconnu par VSCode, ce qui est pratique).
J'ai résumé les commandes que je pense utiliser.
Installation de poésie
pip install --user poetry
Utilisez venv, qui est utilisé pour séparer l'environnement, et définissez le répertoire .venv à créer et à utiliser automatiquement.
poetry config virtualenvs.in-project true
Installer des packages pour le développement uniquement
poetry add -D black
Installer des packages dépendants depuis l'application
poetry add flask
Lors de la création d'un environnement de développement sur une autre machine
#Créer un environnement séparé
python -m venv .venv
#Installation du package
poetry install
Exécution du programme
Le package est installé sous .venv, alors exécutez-le en .venv
.venv/bin/python api.py
Ou exécutez via Poetry
poetry run python api.py
Mise à jour du package
poetry update
Conteneurisation
N'utilisez pas .venv dans le conteneur, utilisez la fonction d'isolation d'environnement de Poetry (car il n'est pas partagé avec VSCode et n'a pas besoin d'être un répertoire .venv en particulier)
FROM python:3.8.2
#Installation de poésie
RUN pip install poetry==1.0.5
WORKDIR /app
#Installation de packages dépendants
COPY poetry.lock pyproject.toml ./
#sauf dev
RUN poetry install --no-dev
#Stockage des applications
COPY api.py ./
# ...
#Courir via la poésie
CMD ["poetry", "run", "python", "api.py"]