Python Language
setup.py
Suche…
Parameter
Parameter | Verwendungszweck |
---|---|
name | Name Ihrer Distribution |
version | Versionszeichenfolge Ihrer Distribution. |
packages | Liste der Python-Pakete (dh Verzeichnisse mit Modulen), die eingeschlossen werden sollen. Dies kann manuell angegeben werden. setuptools.find_packages() wird stattdessen ein Aufruf von setuptools.find_packages() verwendet. |
py_modules | Liste der Python-Module der obersten Ebene ( .py einzelne .py Dateien), die eingeschlossen werden sollen. |
Bemerkungen
Weitere Informationen zur Python-Verpackung finden Sie unter:
Für das Schreiben offizieller Pakete gibt es eine Gebrauchsanweisung für Verpackungen .
Zweck von setup.py
Das Setup-Skript ist das Zentrum aller Aktivitäten beim Erstellen, Verteilen und Installieren von Modulen mithilfe der Distutils. Zweck ist die korrekte Installation der Software.
Wenn Sie nur ein Modul namens foo verteilen möchten, das in einer Datei foo.py enthalten ist, kann Ihr Setup-Skript so einfach sein:
from distutils.core import setup
setup(name='foo',
version='1.0',
py_modules=['foo'],
)
Um eine Quelldistribution für dieses Modul zu erstellen, erstellen Sie ein Setupskript, setup.py, das den obigen Code enthält, und führen diesen Befehl von einem Terminal aus aus:
python setup.py sdist
sdist erstellt eine Archivdatei (z. B. Tarball unter Unix, ZIP-Datei unter Windows) mit Ihrem Setup-Skript setup.py und Ihrem Modul foo.py. Die Archivdatei heißt foo-1.0.tar.gz (oder .zip) und wird in ein Verzeichnis foo-1.0 entpackt.
Wenn ein Endbenutzer Ihr foo-Modul installieren möchte, muss er lediglich foo-1.0.tar.gz (oder .zip) herunterladen, entpacken und aus dem foo-1.0-Verzeichnis ausführen
python setup.py install
Hinzufügen von Befehlszeilenskripten zu Ihrem Python-Paket
Befehlszeilenskripts innerhalb von Python-Paketen sind üblich. Sie können Ihr Paket so organisieren, dass das Skript, wenn ein Benutzer das Paket installiert, unter seinem Pfad verfügbar ist.
Wenn Sie das greetings
, das das Befehlszeilenskript hello_world.py
.
greetings/
greetings/
__init__.py
hello_world.py
Sie können dieses Skript ausführen, indem Sie Folgendes ausführen:
python greetings/greetings/hello_world.py
Wenn Sie es jedoch gerne so ausführen möchten:
hello_world.py
Sie können dies erreichen , indem das Hinzufügen scripts
zu Ihrem setup()
in setup.py
wie folgt aus :
from setuptools import setup
setup(
name='greetings',
scripts=['hello_world.py']
)
Wenn Sie jetzt das Begrüßungspaket installieren, wird hello_world.py
zu Ihrem Pfad hinzugefügt.
Eine andere Möglichkeit wäre, einen Einstiegspunkt hinzuzufügen:
entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}
Auf diese Weise müssen Sie es nur so ausführen:
greetings
Verwenden der Quellcodeverwaltungsmetadaten in setup.py
setuptools_scm
ist ein offiziell gesegnetes Paket, das Git oder Mercurial-Metadaten verwenden kann, um die Versionsnummer Ihres Pakets zu ermitteln und Python-Pakete und -Daten zu finden, die darin enthalten sind.
from setuptools import setup, find_packages
setup(
setup_requires=['setuptools_scm'],
use_scm_version=True,
packages=find_packages(),
include_package_data=True,
)
In diesem Beispiel werden beide Funktionen verwendet. Um nur SCM-Metadaten für die Version zu verwenden, ersetzen Sie den Aufruf von find_packages()
durch Ihre manuelle Paketliste, oder entfernen Sie use_scm_version=True
, um nur den use_scm_version=True
.
Installationsoptionen hinzufügen
Wie in den vorherigen Beispielen gezeigt, ist die grundlegende Verwendung dieses Skripts:
python setup.py install
Es gibt jedoch noch mehr Optionen, beispielsweise die Installation des Pakets und die Möglichkeit, den Code zu ändern und zu testen, ohne ihn erneut installieren zu müssen. Dies geschieht mit:
python setup.py develop
Wenn Sie bestimmte Aktionen ausführen möchten , beispielsweise das Erstellen einer Sphinx- Dokumentation oder das Erstellen von Fortran- Code, können Sie eine eigene Option wie folgt erstellen:
cmdclasses = dict()
class BuildSphinx(Command):
"""Build Sphinx documentation."""
description = 'Build Sphinx documentation'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
import sphinx
sphinx.build_main(['setup.py', '-b', 'html', './doc', './doc/_build/html'])
sphinx.build_main(['setup.py', '-b', 'man', './doc', './doc/_build/man'])
cmdclasses['build_sphinx'] = BuildSphinx
setup(
...
cmdclass=cmdclasses,
)
initialize_options
und finalize_options
werden vor und nach der run
Funktion ausgeführt, wie ihre Namen es vermuten lassen.
Danach können Sie Ihre Option aufrufen:
python setup.py build_sphinx