Maison >développement back-end >Tutoriel Python >Comment créer son propre projet Python en Inutes
Python prend en charge tous les types d'exécution ; vous pouvez exécuter du code Python directement dans un shell, ou mettre votre code dans un fichier et l'exécuter plus tard.
Parfois, démarrer un nouveau projet Python est très difficile ; Écrire un scénario ? Écrire un module ? Écrire un colis ?
Le meilleur choix est le modèle micropiecies : écrivez un script, donc réécrivez-le dans un module et ainsi réécrivez-le dans un package.
Ce modèle vous permet de ne pas réinventer la roue tous les jours et de réutiliser le code dans le futur.
Le package Python a cette structure :
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
Le dossier pkg est un package, car contient le module __init__.py. Le dossier subpkg est également un package ; est un sous-paquet de pkg.
module1.py et module2.py sont des modules de leurs packages.
Le module __main__.py permet l'exécution du package.
Si vous devenez développeur Python, vous utilisez habituellement d'autres outils.
Dans l'ordre, suivez ces étapes pour chaque morceau de code que vous écrivez :
Chaque modification de votre code peut introduire d'éventuels bugs. Pour éliminer cela, chaque fois que nous avons besoin de tester notre propre package dans le bon environnement.
Pour ce faire, certains outils sont nécessaires sur Python lui-même, comme git, docker et make.
Il ne suffit pas de simplement créer un package Python et de le rendre immédiatement accessible à tous. Il faut également réfléchir à la manière de le documenter, de l'expliquer brièvement à d'autres personnes, de l'autoriser et d'expliquer comment l'intégrer au projet.
Cela nécessite de développer des fichiers comme README, LICENSE, CODE_OF_CONDUCT et CONTRIBUTING.
Peut-être en ajoutant un CHANGELOG pour conserver et permettre aux autres de suivre les modifications apportées à chaque version.
Pour réaliser toutes les parties d'un projet Python, cela prend quelques heures ou quelques jours.
Mais existe un outil à cet effet : psp.
Après avoir suivi les instructions d'installation :
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
exécutez-le :
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
Maintenant, vérifiez le projet Python qui a été créé :
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
Commencez à développer le package que la commande psp a créé pour notre projet.
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
Maintenant, importez notre fonction hello_world dans le fichier __main__.py :
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
Vous avez écrit un package simple, mais organisé et puissant, prêt à être produit et distribué.
Testez notre forfait.
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
Et le résultat est :
Teste désormais également le code Python sur le package, via le dossier tests :
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
Vous pouvez désormais enregistrer le développement de votre application Web.
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
Simulez avec docker votre environnement de production :
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
Et le résultat est le même :
Maintenant, après le prochain développement, vous pouvez utiliser le pipeline avec Makefile :
[test@ubuntu app] vim app/__main__.py
Maintenant, si vous le souhaitez, vous êtes prêt à publier votre package Python sur PyPi :
#! /usr/bin/env python3 # -*- encoding: utf-8 -*- # vim: se ts=4 et syn=python: # Generated by psp (https://github.com/MatteoGuadrini/psp) from .__init__ import __version__ print(f'app {__version__}') from .core import app app.run(debug=True)
En moins de cinq minutes, vous avez créé un projet Python où le développement du package lui-même est la seule chose dont vous devez vous soucier.
Outils utilisés sur cet article :
psp : référentiel -- docs
git : référentiel -- docs
docker : référentiel -- docs
make: dépôt -- docs
python : référentiel -- docs
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!