Python unterstützt alle Arten der Ausführung; Sie können Python-Code direkt in einer Shell ausführen oder Ihren Code in eine Datei schreiben und später ausführen.
Manchmal ist es sehr schwierig, ein neues Python-Projekt zu starten. Ein Drehbuch schreiben? Ein Modul schreiben? Ein Paket schreiben?
Die beste Wahl ist das Micropiecies-Muster: Schreiben Sie ein Skript, schreiben Sie es also in einem Modul und dann in einem Paket neu.
Dieses Muster ermöglicht es Ihnen, das Rad nicht jeden Tag neu zu erfinden und den Code in Zukunft wiederzuverwenden.
Python-Paket hat diese Struktur:
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
Der Ordner pkg ist ein Paket, da er das Modul __init__.py enthält. Auch der Ordner subpkg ist ein Paket; ist ein Unterpaket von pkg.
module1.py und module2.py sind Module ihrer Pakete.
Das Modul __main__.py ermöglicht die Ausführung von Paketen.
Wenn Sie Python-Entwickler werden, verwenden Sie normalerweise andere Tools.
Befolgen Sie in der Reihenfolge die folgenden Schritte für jeden Code, den Sie schreiben:
Jede Änderung in Ihrem Code kann zu möglichen Fehlern führen. Um dies zu verwerfen, müssen wir jedes Mal das eigene Paket in der richtigen Umgebung testen.
Dazu werden einige Tools über Python selbst benötigt, wie Git, Docker und Make.
Es reicht nicht aus, einfach ein Python-Paket zu erstellen und es sofort für alle verfügbar zu machen. Sie müssen auch darüber nachdenken, wie Sie es dokumentieren, es anderen Menschen kurz erklären, es lizenzieren und erklären, wie Sie es in das Projekt integrieren können.
Dies erfordert die Entwicklung von Dateien wie README, LICENSE, CODE_OF_CONDUCT und CONTRIBUTING.
Fügen Sie möglicherweise ein ÄNDERUNGSLOG hinzu, damit andere die an jeder Version vorgenommenen Änderungen verfolgen können.
Um alle Teile eines Python-Projekts zu realisieren, dauert es einige Stunden oder Tage.
Dafür gibt es aber ein Tool: psp.
Nachdem wir die Installationsanweisungen befolgt haben:
[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
Führen Sie es aus:
[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
Überprüfen Sie nun das erstellte Python-Projekt:
[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
Beginnen Sie mit der Entwicklung des Pakets, das der PSP-Befehl für unser Projekt erstellt hat.
[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>"
Jetzt importieren Sie unsere hello_world-Funktion in die Datei __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
Sie haben ein einfaches, aber organisiertes und leistungsstarkes Paket geschrieben, das zur Produktion und Verteilung bereit ist.
Testen Sie unser Paket.
[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
Und das Ergebnis ist:
Testet jetzt auch den Python-Code auf dem Paket im Testordner:
[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
Jetzt können Sie die Entwicklung Ihrer Web-App speichern.
[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
Simulieren Sie mit Docker Ihre Produktionsumgebung:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
Und das Ergebnis ist das gleiche:
Jetzt, nach der nächsten Entwicklung, können Sie die Pipeline mit Makefile:
verwenden
[test@ubuntu app] vim app/__main__.py
Wenn Sie möchten, können Sie jetzt Ihr Python-Paket auf PyPi veröffentlichen:
#! /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)
In weniger als fünf Minuten haben Sie ein Python-Projekt erstellt, bei dem Sie sich nur um die Entwicklung des Pakets selbst kümmern müssen.
In diesem Artikel verwendete Tools:
psp: Repository – Dokumente
git: Repository – Dokumente
Docker: Repository – Dokumente
make: Repository – Dokumente
Python: Repository – Dokumente
Das obige ist der detaillierte Inhalt vonSo erstellen Sie in wenigen Minuten ein eigenes Python-Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!