Autres chapitres
Dans le processus de développement de projet réel, des processus standardisés de packaging et de déploiement de projets, pour les projets open source, peuvent vous aider à publier le projet dans un entrepôt public pour faciliter le téléchargement et l'installation des utilisateurs. Pour les projets commerciaux, vous pouvez établir un serveur PyPi privé sur un serveur cloud pour réaliser la publication en ligne et améliorer l'efficacité du déploiement.
Processus de packaging et de déploiement du projet Python
- Créer et configurer des projets
- Projet de package
- Téléchargez le projet sur PyPi ou un référentiel privé
- Télécharger et installer des projets
Composant de publication du projet
Après l'empaquetage, deux composants de publication principaux (artefact) seront générés
- Package de fichiers source : fichier source Python, abrégé en sdist, comprenant .py, fichiers de ressources, fichiers de données, etc.
- Le package binaire , au format binaire compilé, généralement au format roue, peut également être fusionné et empaqueté avec des bibliothèques tierces non Python. Son installateur est pip.
Il existe deux formats de packages binaires Python : Whee et Egg. Le format Egg a été introduit par setuptools en 2004, et le format Wheel a été introduit dans PEP 427 en 2012. Wheel est actuellement considéré comme la norme pour l'empaquetage intégré et binaire de Python.
3. Introduction aux outils d'emballage
Le plus ancien outil d'empaquetage Python est distutils , qui est utilisé setup.py
comme fichier de configuration. Il a ensuite été remplacé par l'outil setuptools et le fichier de configuration est pyproject.toml, mais il peut également être utilisé setup.py
comme fichier de configuration.
D'autres outils d'emballage incluent : Outil de poésie. Pipenv, PDM
étapes d'empaquetage de setuptools
4. Explication détaillée des étapes d'emballage
Cet article utilise le setuptools,
fichier de configuration de l'outil d'empaquetage officiellement recommandé pyproject.toml
.
1) Installez les outils de configuration
Commande d'installation
pip install --upgrade setuptools
Mettre à jour le module de construction
pip install --upgrade build
2) Utilisation de base
Créer 1 pyproject.toml
, ajouter la configuration de la section du système de construction
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
Habituellement, vous devez ajouter davantage de sections de configuration de section, de métadonnées, de contenu, de dépendances, etc. Ces contenus peuvent également être inclus dans setup.cfg
des fichiers.
Tel que pyproject.toml
[project]
name = "mypackage"
version = "0.0.1"
dependencies = [
"requests",
'importlib-metadata; python_version<"3.8"',
]
setup.cfg
[metadata]
name = mypackage
version = 0.0.1
[options]
install_requires =
requests
importlib-metadata; python_version < "3.8"
3) Organiser la structure du projet
Les fichiers de projet peuvent être organisés comme suit :
mypackage
├── pyproject.toml
| README.rst or README.md
| # LICENCE (properly chosen license information, e.g. MIT, BSD-3, GPL-3, MPL-2, etc...)
└── mypackage
├── __init__.py
└── ... (other Python files)
4) Compiler le projet
Dans le répertoire pyproject.toml, exécutez la commande packaging,
py -m build
Cette commande recherchera automatiquement le sous-répertoire du package et générera des artefacts sdist et wheel.
dist/
├── example_package_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
└── example_package_YOUR_USERNAME_HERE-0.0.1.tar.gz
Parmi eux : *.tar.gz est le package de fichiers source, .whl est la distribution construite, qui est le package binaire compilé. Lors de l'installation, pip installe d'abord le package de roues.
Spécifiez le répertoire du fichier source et générez uniquement les packages sdist
python -m build --sdist source-directory
Pour les projets commerciaux, si vous n'avez pas besoin de publier le code source, vous pouvez uniquement générer le package wheel.
python3 -m build --wheel source-tree-directory
5) Téléchargez le package sur PyPi
Pour enregistrer le même compte
Adresse du compte de test : https://test.pypi.org/account/register/
Pour télécharger des fichiers, un jeton est également requis.
Afin de télécharger votre projet en toute sécurité, vous avez besoin d'un jeton API PyPiI . Il peut être créé sur https://test.pypi.org/manage/account/#api-tokens. Définissez "Scope" sur "Entie Account" . Ne fermez pas la page avant de copier et d'enregistrer le jeton - sinon, il ne fonctionne pas. Vous verrez à nouveau le jeton
L'outil de téléchargement de fichiers est Twine. La commande d'installation est la suivante
py -m pip install --upgrade twine
Exécutez dans le sous-répertoire dist pour télécharger tous les fichiers
py -m twine upload --repository testpypi dist/*
Une fois la commande ci-dessus exécutée, vous serez invité à saisir votre nom d'utilisateur et votre mot de passe. Utilisez le nom d'utilisateur __token__
. Pour le mot de passe, utilisez la valeur toke, y compris pypi-
le préfixe.
D:\workplace\python\guangda>python -m twine upload --repository testpypi dist/*
Uploading distributions to https://test.pypi.org/legacy/
Enter your username: peter
Enter your password:
Uploading face_push-0.0.1-py3-none-any.whl
100% ---------------------------------------- 18.6/18.6 kB • 00:00 • ?
Uploading face_push-0.0.1.tar.gz
100% ---------------------------------------- 17.5/17.5 kB • 00:00 • ?
View at:
https://test.pypi.org/project/face-push/0.0.1/
Une fois le téléchargement terminé, vérifiez
https://test.pypi.org/project/example_package
5. Téléchargez et installez des projets
Il est recommandé d'ajouter un nouvel environnement virtuel pour vérification. Vérifiez si l'installation a réussi
py -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package
py -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package-YOUR-USERNAME-HERE
Notez que TestPyPI est utilisé pour les tests.
Une fois l'installation terminée, importez le package pour le tester
from example_package import example
example.add_one(2)
Après en avoir pris connaissance, l'adresse officielle d'enregistrement du compte PyPI :
Pour déployer le serveur PyPI en privé, veuillez vous référer à la documentation officielle de pypiserver