Dies ist eine CookieCutter -Vorlage, um ein Python -Projekt zu erstellen, das bei PYPI verteilt werden soll. Es umfasst die Integration mit GitHub -Aktionen, Redethedocs.io und Coveralls.io.
Die Projektstruktur folgt dem Muster aus dem Demonstrationsprojekt für Apologies. Poesie wird verwendet, um Python-Verpackungen und -abhängigkeiten zu verwalten, und die meisten täglichen Aufgaben (z. B. Ausführen von Unit-Tests aus der Befehlszeile) werden durch Poesie unter Verwendung meines Run-Script-Frameworks orchestriert. Ein Codierungsstandard wird mit Schwarz, ISORT und PyRINT erzwungen. Python 3 -Typ wird mithilfe von MyPy validiert. Der Workflow von GitHub Actions ist ein Matrixgebäude, das mit meinen GHA-Shared-Workflows implementiert ist. Es gibt auch Pre-Commit-Haken, um die Code-Stilprüfungen durchzusetzen. Eine generierte DEVELOPER.md -Datei enthält Hinweise darauf, wie der Code strukturiert ist, wie eine Entwicklungsumgebung eingerichtet wird, usw.
Um diese Vorlage zu verwenden, müssen Sie CookieCutter installieren:
pip install cookiecutter
Das resultierende Projekt hängt vom Poesie -Build -Tool ab. Sie müssen nur einen Python 3 -Interpreter und eine Poesie installieren. Poesie selbst kümmert sich um alles andere. Siehe die Anweisungen.
In dem in der resultierenden DEVELOPER.md beschriebenen Entwicklerprozess wird angenommen, dass Sie eine Shell im Unix-Stil wie Bash bearbeiten. Von Windows wird erwartet, dass Sie den mit Git für Windows installierten Git -Bash -Emulator verwenden.
Standardmäßig ist der Freigabeprozess im generierten .github/workflows/test-suite.yml -Workflow so konfiguriert, dass sie Artefakte veröffentlichen, indem sie an eine Version im Github-Repository anhängen. (Die Datei für generierte DEVELOPER.md enthält Anweisungen.) Optional können Sie auch an PYPI veröffentlichen. Erstellen Sie dazu ein Konto bei PYPI für sich selbst und registrieren Sie Ihr Projekt. Sobald das Projekt vorhanden ist, gehen Sie zu Ihren PYPI -Kontoeinstellungen und erstellen Sie ein API -Token mit Upload -Berechtigungen für das neue Projekt. Fügen Sie in Ihrem GitHub -Repository ein Github -Aktionen hinzu, das als PYPI_TOKEN bezeichnet wird, um das Token zu halten. Passen Sie dann test-suite.yml an, um publish-pypi: true zu setzen.
Verwenden Sie cookiecutter , um die Vorlage auszuführen:
cookiecutter gh:pronovic/cookiecutter-pypi
Geben Sie bei der Aufforderung Werte für alle Vorlagenparameter an:
project_slug [sample-project]:
project_name [Sample Project]:
short_description [Short description]:
author_name [First Last]:
author_email [[email protected]]:
github_owner [owner]:
github_repo [samplerepo]:
default_branch [master]:
package [sample]:
python_version [>=3.9,<4]:
black_target ['py39', 'py310']:
copyright_year [2022]:
Der Projektschlüssel ist der Name des resultierenden Verzeichnisses. In diesem Beispiel wird das Projekt in sample-project generiert:
cd sample-project
Initialisieren Sie dann das Git -Repository:
git init . && git add . && git commit -m "Initial revision based on pronovic/cookiecutter-pypi"
Angenommen, Sie haben bereits poetry installiert (gemäß den Anweisungen), können Sie die Dinge mit dem run -Skript beginnen. Installieren Sie zunächst die Abhängigkeiten und richten Sie die Pre-Commit-Hooks ein:
./run install
Schließlich führen Sie die Testsuite aus:
./run suite
Unter der Annahme der Testsuite müssen Sie poetry.lock einchecken, mit der aktuellen Version aller Abhängigkeiten:
git add poetry.lock && git commit -m "Add initial poetry.lock" poetry.lock
Dann können Sie in Ihr Repository drücken und den GitHub -Aktionenprozess testen.
HINWEIS: Um zu sehen, welche anderen Befehle verfügbar sind, verwenden Sie
./run --help. Weitere Informationen zurDEVELOPER.md, einschließlich der Integration mit Pycharm usw.
Sie müssen .github/workflows/test-suite.yml manuell anpassen, um die Plattformen und Python-Versionen zu reflektieren, die Sie testen möchten. Der vorgeschlagene Workflow betreibt einen Matrix -Build unter Linux für alle unterstützten Python -Versionen und einen Build unter Windows und MacOS nur für die neueste Python -Version. Bei GitHub -Aktionen sind die Linux -Läufer viel schneller und zuverlässiger, so dass diese Strategie die besten Ergebnisse zu erzielen scheint.