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:

Einführung

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


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