Python Language
Python-Pakete erstellen
Suche…
Bemerkungen
Das pypa-Beispielprojekt enthält ein komplettes, leicht zu setup.py
Template setup.py
, das eine Vielzahl von Möglichkeiten zeigt, die Setup-Tools bieten.
Einführung
Für jedes Paket ist eine setup.py
Datei erforderlich, die das Paket beschreibt.
Betrachten Sie die folgende Verzeichnisstruktur für ein einfaches Paket:
+-- package_name
| |
| +-- __init__.py
|
+-- setup.py
Die __init__.py
enthält nur die Zeile def foo(): return 100
.
Die folgende setup.py
definiert das Paket:
from setuptools import setup
setup(
name='package_name', # package name
version='0.1', # version
description='Package Description', # short description
url='http://example.com', # package URL
install_requires=[], # list of packages this package depends
# on.
packages=['package_name'], # List of module names that installing
# this package will provide.
)
Mit virtualenv können Sie Paketinstallationen testen, ohne Ihre anderen Python-Umgebungen zu ändern :
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo()
100
Hochladen in PyPI
Sobald Ihre setup.py
voll funktionsfähig ist (siehe Einführung ), ist es sehr einfach, Ihr Paket auf PyPI hochzuladen.
Richten Sie eine .pypirc-Datei ein
Diese Datei speichert Anmeldungen und Kennwörter, um Ihre Konten zu authentifizieren. Sie wird normalerweise in Ihrem Heimatverzeichnis gespeichert.
# .pypirc file
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password
[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password
Es ist sicherer , twine
zum Hochladen von Paketen zu verwenden. twine
Sie daher sicher, dass die Installation erfolgt.
$ pip install twine
Registrieren und Hochladen zu testpypi (optional)
Hinweis : PyPI erlaubt das Überschreiben von hochgeladenen Paketen nicht. Daher ist es ratsam , die Bereitstellung zunächst auf einem dedizierten Testserver (z. B. testpypi) zu testen. Diese Option wird diskutiert. Betrachten Sie vor dem Hochladen ein Versionsschema für Ihr Paket, z. B. Kalenderversionierung oder semantische Versionierung .
Melden Sie sich an oder erstellen Sie ein neues Konto bei testpypi . Eine Registrierung ist nur beim ersten Mal erforderlich, obwohl eine mehrfache Registrierung nicht schädlich ist.
$ python setup.py register -r pypitest
Im Stammverzeichnis des Pakets:
$ twine upload dist/* -r pypitest
Ihr Paket sollte jetzt über Ihr Konto zugänglich sein.
Testen
Erstellen Sie eine virtuelle Testumgebung. Versuchen Sie, Ihr Paket entweder von testpypi oder PyPI zu pip install
.
# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv) pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...
(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100
Bei Erfolg ist Ihr Paket am wenigsten importierbar. Sie können Ihre API auch testen, bevor Sie sie endgültig in PyPI hochladen. Wenn das Paket während des Tests fehlgeschlagen ist, machen Sie sich keine Sorgen. Sie können das Problem weiterhin beheben, erneut auf testpypi hochladen und erneut testen.
Registrieren und Hochladen auf PyPI
Stellen Sie sicher, dass das twine
installiert ist:
$ pip install twine
Melden Sie sich an oder erstellen Sie ein neues Konto bei PyPI .
$ python setup.py register -r pypi
$ twine upload dist/*
Das ist es! Ihr Paket ist jetzt live .
Wenn Sie einen Fehler entdecken, laden Sie einfach eine neue Version Ihres Pakets hoch.
Dokumentation
Vergessen Sie nicht, mindestens eine Art Dokumentation für Ihr Paket beizulegen. PyPi verwendet reStructuredText als Standardformatierungssprache.
Readme
Wenn Ihr Paket keine umfangreiche Dokumentation enthält, geben Sie an, was anderen Benutzern in der Datei README.rst
helfen kann. Wenn die Datei fertig ist, wird eine weitere benötigt, um PyPi mitzuteilen, dass die Datei angezeigt werden soll.
Erstellen setup.cfg
Datei setup.cfg
und setup.cfg
diese beiden Zeilen ein:
[metadata]
description-file = README.rst
Wenn Sie versuchen, eine Markdown- Datei in Ihr Paket aufzunehmen, wird sie von PyPi als reine Textdatei ohne Formatierung gelesen.
Lizenzierung
Es ist oft mehr als willkommen, eine LICENSE.txt
Datei mit einer der OpenSource-Lizenzen in Ihr Paket aufzunehmen, um den Benutzern mitzuteilen, ob sie Ihr Paket beispielsweise in kommerziellen Projekten verwenden können oder ob Ihr Code mit ihrer Lizenz verwendet werden kann.
In besser lesbarer Weise werden einige Lizenzen bei TL erläutert.
Paket ausführbar machen
Wenn Ihr Paket nicht nur eine Bibliothek ist, sondern einen Code enthält, der bei der Installation des Pakets entweder als Showcase oder als eigenständige Anwendung verwendet werden kann, legen Sie diesen Code in __main__.py
Datei __main__.py
Legen Sie die __main__.py
package_name
Ordner package_name
. Auf diese Weise können Sie es direkt von der Konsole aus ausführen:
python -m package_name
Wenn keine __main__.py
Datei verfügbar ist, wird das Paket nicht mit diesem Befehl ausgeführt, und dieser Fehler wird gedruckt:
Python: Kein Modul mit dem Namen
package_name.__main__;
'package_name' ist ein Paket und kann nicht direkt ausgeführt werden.