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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow