Welche Schlüsselwortargumente akzeptiert setuptools.setup ()?

8

Was ist die vollständige Liste der Schlüsselwortargumente, die die Funktion setuptools.setup () akzeptiert? (Bitte geben Sie nach Möglichkeit eine Beschreibung der Bedeutung der einzelnen Argumente an.)

Ich habe im ganzen Web nachgesehen und kann nicht glauben, dass dies nicht dokumentiert ist.

Ich habe diese Dokumente gefunden:

Aber selbst wenn ich diese kombiniere, fehlen ihnen andere Argumente wie

  • Skripte
  • Pakete
  • bietet
  • veraltet

... und ich weiß nicht, wie viele weitere Argumente fehlen.

Was ist die vollständige Liste der Schlüsselwortargumente, die die Funktion setuptools.setup () akzeptiert?

Cowlinator
quelle
3
Die meisten Informationen, nach denen Sie suchen, befinden sich in der Dokumentation, die Sie gefunden haben, jedoch nicht in einem geeigneten Listenformat. Es ist über mehrere Seiten fragmentiert, und Sie müssen alles durchlesen, um Argumente zu finden, die nur in der Mitte eines normalen Textabsatzes erwähnt werden.
user2357112 unterstützt Monica
Oh, ich verstehe. Das ist furchtbar.
Cowlinator
3
Sie könnten denken, dass das Problem darin besteht, dass Sie eher eine "Tutorial" -Seite betrachten und die API-Referenz benötigen , aber nein! Die Tabelle in der Distutils-API-Referenz ist ebenfalls unvollständig, es fehlen Argumente wie providesund requires(und natürlich nichts, was von setuptools hinzugefügt wurde, da es sich um die distutils-Dokumentation handelt), und ich glaube, setuptools hat nicht einmal eine API-Referenz.
user2357112 unterstützt Monica
2
Ich bin froh, dass ich nicht der einzige bin, der davon verblüfft ist ... Ich dachte, ich würde den Verstand verlieren. Wie in * # $% ist eines der Kernwerkzeuge in der beliebtesten Programmiersprache der Welt nicht tatsächlich dokumentiert?
Thegreatemu

Antworten:

8

setuptools.setup()ruft auf distutils.core.setup()und übergibt es **kwargsals einzigen Parameter, sodass alle Schlüsselwörter, die distutilsakzeptiert werden, auch von akzeptiert werden setuptools. Wenn wir schauendistutils

    setup_keywords = ('distclass', 'script_name', 'script_args', 
                      'options', 'name', 'version', 'author', 
                      'author_email', 'maintainer', 'maintainer_email', 
                      'url', 'license', 'description', 
                      'long_description', 'keywords', 'platforms', 
                      'classifiers', 'download_url', 'requires', 
                      'provides', 'obsoletes',
                  )

Die meisten davon sind hier dokumentiert , aber einige sind nicht in der Tabelle enthalten: packages , package_dir , package_data , scripts , obsoletes , proviodes , py_modules und data_files .

Einige davon fehlen auch im setup_keywordsTupel. Und wenn Sie danach setup_keywordssuchen, sieht es nicht so aus, als würde es tatsächlich irgendwo referenziert ... Aber das ist eine Geschichte für einen anderen Tag. Wie auch immer, hier ist die (hoffentlich vollständige) Liste.


distutils.core.setup () Schlüsselwortargumente

( Erforderlich : Name , Version und mindestens einer der Autoren oder Betreuer )


Autor:

Name des Paketautors (erforderlich, wenn kein Betreuer angegeben ist)

author_email:

E-Mail-Adresse des Paketautors

Klassifikatoren:

eine Liste der Klassifikatoren (siehe: https://pypi.org/classifiers/ )

Datendateien :

Mit dieser data_filesOption können zusätzliche Dateien angegeben werden, die von der Modulverteilung benötigt werden: Konfigurationsdateien, Nachrichtenkataloge, Datendateien, alles, was nicht in die vorherigen Kategorien passt.

data_filesGibt eine Folge von (directory, files)Paaren folgendermaßen an:

setup(...,
      data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
                  ('config', ['cfg/data.cfg'])],
     )

Jedes (directory, files)Paar in der Sequenz gibt das Installationsverzeichnis und die dort zu installierenden Dateien an. Jeder Dateiname in Dateien wird relativ zum setup.pySkript interpretiert .

Beschreibung:

kurze, zusammenfassende Beschreibung des Pakets

download_url:

Speicherort, an dem das Paket heruntergeladen werden kann

Schlüsselwörter:

eine Liste von Schlüsselwörtern (nimmt auch eine Zeichenfolge an. Wenn durch Kommas getrennt, wird diese in eine Liste aufgeteilt)

Lizenz:

Lizenz für das Paket (Nur verwenden, wenn die Lizenz nicht in den "Trove Classifiers" aufgeführt ist. Siehe: Classifiers)

Lange Beschreibung:

längere Beschreibung des Pakets, das von PyPI zum Erstellen der Projektseite verwendet wird

Betreuer:

Name des Paketverwalters (erforderlich, wenn der Autor nicht angegeben ist)

Betreuer_email:

E-Mail-Adresse des Paketbetreuers

Name:

Name des Pakets (erforderlich von distutils)

veraltet :

Ein Paket kann mithilfe des obsoletesSchlüsselwortarguments deklarieren, dass es andere Pakete veraltet . Der Wert hierfür ähnelt dem des requiresSchlüsselworts: Eine Liste von Zeichenfolgen, die Modul- oder Paketspezifizierer angeben. Jeder Bezeichner besteht aus einem Modul- oder Paketnamen, optional gefolgt von einem oder mehreren Versionsqualifizierern. Versionsqualifizierer werden in Klammern nach dem Modul- oder Paketnamen angegeben

package_data :

Paketdaten können Paketen mithilfe des package_dataSchlüsselwortarguments zur setup()Funktion hinzugefügt werden . Der Wert muss eine Zuordnung vom Paketnamen zu einer Liste relativer Pfadnamen sein, die in das Paket kopiert werden sollen. Die Pfade werden als relativ zu dem Verzeichnis interpretiert, das das Paket enthält (Informationen aus der package_dirZuordnung werden gegebenenfalls verwendet). Das heißt, die Dateien werden voraussichtlich Teil des Pakets in den Quellverzeichnissen sein.

package_dir :

Wenn Sie eine andere Konvention verwenden, um Ihr Quellverzeichnis zu gestalten, ist dies kein Problem: Sie müssen nur die package_dirOption angeben, um die Distutils über Ihre Konvention zu informieren. Angenommen, Sie behalten alle Python-Quellen unter lib, sodass Module im „Root-Paket“ (dh überhaupt in keinem Paket) lib, Module im fooPaket in lib/foousw. enthalten sind. Dann würdest du setzen

package_dir = {'': 'lib'}

in Ihrem Setup-Skript. Die Schlüssel zu diesem Wörterbuch sind Paketnamen, und ein leerer Paketname steht für das Stammpaket. Die Werte sind Verzeichnisnamen relativ zu Ihrem Verteilungsstamm. In diesem Fall packages = ['foo']versprechen Sie, wenn Sie sagen , dass die Datei lib/foo/__init__.pyvorhanden ist.

Eine andere mögliche Konvention besteht darin, das fooPaket richtig einzulegen lib, das foo.barPaket einzulegen lib/barusw. Dies würde im Setup-Skript als geschrieben

package_dir = {'foo': 'lib'}

Ein package: dirEintrag im package_dirWörterbuch gilt implizit für alle Pakete unter dem Paket, sodass der foo.barFall hier automatisch behandelt wird. In diesem Beispiel werden packages = ['foo', 'foo.bar']die Distutils angewiesen, nach lib/__init__.pyund zu suchen lib/bar/__init__.py. ( package_dirBeachten Sie, dass Sie , obwohl rekursiv, alle Pakete in Paketen explizit auflisten müssen: Die Distutils scannen Ihren Quellbaum nicht rekursiv nach einem Verzeichnis mit einer __init__.pyDatei.)

Pakete :

Paketdaten können Paketen mithilfe des package_dataSchlüsselwortarguments zur setup()Funktion hinzugefügt werden . Der Wert muss eine Zuordnung vom Paketnamen zu einer Liste relativer Pfadnamen sein, die in das Paket kopiert werden sollen. Die Pfade werden als relativ zu dem Verzeichnis interpretiert, das das Paket enthält (Informationen aus der package_dirZuordnung werden gegebenenfalls verwendet). Das heißt, die Dateien werden voraussichtlich Teil des Pakets in den Quellverzeichnissen sein. Sie können auch Glob-Muster enthalten.

Plattformen:

eine Liste von Plattformen (Nimmt auch eine Zeichenfolge. Wenn durch Kommas getrennt, wird es in eine Liste aufgeteilt)

bietet :

Jetzt, da wir Abhängigkeiten angeben können, müssen wir auch angeben können, was wir für andere Distributionen bereitstellen können. Dies erfolgt mit dem providesSchlüsselwortargument to setup().

py_modules :

Bei einer kleinen Modulverteilung ziehen Sie es möglicherweise vor, alle Module aufzulisten, anstatt Pakete aufzulisten - insbesondere bei einem einzelnen Modul, das in das „Root-Paket“ gehört (dh überhaupt kein Paket).

py_modules = ['foo.py']

Hier ist ein etwas komplizierteres Beispiel:

py_modules = ['mod1', 'pkg.mod2']

Dies beschreibt zwei Module, eines davon im "root" -Paket, das andere im pkgPaket. Auch hier impliziert das Standardpaket- / Verzeichnislayout, dass diese beiden Module in mod1.pyund gefunden werden pkg/mod2.pykönnen und dass dies auch pkg/__init__.pyvorhanden ist. Auch hier können Sie die Paket- / Verzeichniskorrespondenz mit der package_dirOption überschreiben .

Skripte :

Skripte sind Dateien mit Python-Quellcode, die über die Befehlszeile gestartet werden sollen. Für Skripte müssen Distutils keine sehr komplizierten Aufgaben ausführen. Die einzige clevere Funktion ist, dass #!die Distutils die erste Zeile so anpassen, dass sie sich auf den aktuellen Interpreter-Speicherort bezieht , wenn die erste Zeile des Skripts mit dem Wort „Python“ beginnt und dieses enthält. Standardmäßig wird es durch den aktuellen Interpreter-Speicherort ersetzt. Mit der Option " --Ausführbare Datei (oder -e)" kann der Interpreterpfad explizit überschrieben werden.

Die Skriptoption ist einfach eine Liste von Dateien, die auf diese Weise behandelt werden sollen. Aus dem PyXML-Setup-Skript:

    setup(...,
          scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
          )

URL:

Homepage für das Paket

Ausführung:

Version dieser Version (erforderlich von distutils)



Schlüsselwortargumente setuptools.setup ()

Es gibt noch mehr Argumente, setuptools.setup()die akzeptiert werden, als die, die von verwendet werden distutils.

Obwohl es "Neue und geänderte Setup-Schlüsselwörter" heißt (was für mich ein Versionsänderungsprotokoll vorschlägt), heißt es im Intro-Text, dass dies "Schlüsselwortargumente für setup () [die von setuptools hinzugefügt oder geändert werden" sind, sodass ich glaube, dass der Link tatsächlich bereitstellt eine vollständige Liste. Ich werde es hier der Vollständigkeit halber hinzufügen.

(Seit setuptools.setup()Aufrufen distutils.core.setup()sind dieselben Parameter erforderlich : Name , Version und mindestens einer der Autoren oder Betreuer. )


convert_2to3_doctests:

Liste der Doctest-Quelldateien, die mit 2to3 konvertiert werden müssen. Weitere Informationen finden Sie unter Unterstützung von Python 2 und Python 3 mit Setuptools.

dependency_links:

Eine Liste von Zeichenfolgen mit URLs, nach denen gesucht werden soll, wenn Abhängigkeiten erfüllt werden. Diese Links werden bei Bedarf verwendet, um Pakete zu installieren, die durch setup_requires oder tests_require angegeben werden. Sie werden auch in die Metadaten des Eies geschrieben, damit sie von Tools wie EasyInstall zur Installation einer .egg-Datei verwendet werden können.

eifrige_Ressourcen:

Eine Liste von Zeichenfolgen, die Ressourcen benennen, die zusammen extrahiert werden sollen, wenn eine davon benötigt wird oder wenn im Projekt enthaltene C-Erweiterungen importiert werden. Dieses Argument ist nur nützlich, wenn das Projekt als Zip-Datei installiert wird und alle aufgelisteten Ressourcen als Einheit in das Dateisystem extrahiert werden müssen. Die hier aufgelisteten Ressourcen sollten '/' - getrennte Pfade relativ zum Quellstamm sein. Um eine Ressource foo.png im Paket bar.baz aufzulisten, würden Sie die Zeichenfolge bar / baz / foo.png in dieses Argument aufnehmen. Wenn Sie nur Ressourcen einzeln abrufen müssen oder keine C-Erweiterungen haben, die auf andere Dateien im Projekt zugreifen (z. B. Datendateien oder gemeinsam genutzte Bibliotheken), benötigen Sie dieses Argument wahrscheinlich NICHT und sollten nicht durcheinander kommen damit. Weitere Informationen zur Funktionsweise dieses Arguments finden Sie unter

Einstiegspunkte:

Ein Wörterbuch, das Eintrittspunktgruppennamen Zeichenfolgen oder Listen von Zeichenfolgen zuordnet, die die Einstiegspunkte definieren. Einstiegspunkte werden verwendet, um die dynamische Erkennung von Diensten oder Plugins zu unterstützen, die von einem Projekt bereitgestellt werden. Weitere Informationen und Beispiele zum Format dieses Arguments finden Sie unter Dynamische Ermittlung von Diensten und Plugins. Darüber hinaus wird dieses Schlüsselwort zur Unterstützung der automatischen Skripterstellung verwendet.

exclude_package_data:

Ein Wörterbuch, das Paketnamen Listen von Glob-Mustern zuordnet, die aus Ihren Paketverzeichnissen ausgeschlossen werden sollen. Sie können dies verwenden, um überschüssige Dateien, die in include_package_data enthalten sind, zurückzuschneiden. Eine vollständige Beschreibung und Beispiele finden Sie im folgenden Abschnitt zum Einschließen von Datendateien.

extras_require:

Ein Wörterbuch, das Namen von „Extras“ (optionale Funktionen Ihres Projekts) Zeichenfolgen oder Listen von Zeichenfolgen zuordnet und angibt, welche anderen Distributionen installiert werden müssen, um diese Funktionen zu unterstützen. Einzelheiten und Beispiele zum Format dieses Arguments finden Sie im folgenden Abschnitt zum Deklarieren von Abhängigkeiten.

include_package_data:

Wenn diese Option auf True gesetzt ist, werden setuptools angewiesen, automatisch alle Datendateien in Ihre Paketverzeichnisse aufzunehmen, die in Ihrer Datei MANIFEST.in angegeben sind. Weitere Informationen finden Sie im folgenden Abschnitt zum Einschließen von Datendateien.

install_requires:

Eine Zeichenfolge oder eine Liste von Zeichenfolgen, die angeben, welche anderen Distributionen installiert werden müssen, wenn dies der Fall ist. Einzelheiten und Beispiele zum Format dieses Arguments finden Sie im folgenden Abschnitt zum Deklarieren von Abhängigkeiten.

Namespace-Pakete:

Eine Liste von Zeichenfolgen, die die "Namespace-Pakete" des Projekts benennen. Ein Namespace-Paket ist ein Paket, das auf mehrere Projektverteilungen aufgeteilt werden kann. Das zope-Paket von Zope 3 ist beispielsweise ein Namespace-Paket, da Unterpakete wie zope.interface und zope.publisher möglicherweise separat verteilt werden. Das Ei-Laufzeitsystem kann solche Unterpakete zur Laufzeit automatisch zu einem einzigen übergeordneten Paket zusammenführen, sofern Sie sie in jedem Projekt deklarieren, das Unterpakete des Namespace-Pakets enthält, und solange die init .py des Namespace-Pakets keinen Code enthält andere als eine Namespace-Deklaration. Weitere Informationen finden Sie im folgenden Abschnitt zu Namespace-Paketen.

package_data:

Ein Wörterbuch, das Paketnamen Listen von Glob-Mustern zuordnet. Eine vollständige Beschreibung und Beispiele finden Sie im folgenden Abschnitt zum Einschließen von Datendateien. Sie müssen diese Option nicht verwenden, wenn Sie include_package_data verwenden, es sei denn, Sie müssen z. B. Dateien hinzufügen, die von Ihrem Setup-Skript und dem Erstellungsprozess generiert werden. (Und befinden sich daher nicht in der Quellcodeverwaltung oder sind Dateien, die Sie nicht in Ihre Quelldistribution aufnehmen möchten.)

project_urls:

Eine beliebige Zuordnung von URL-Namen zu Hyperlinks, die eine ausführlichere Dokumentation darüber ermöglicht, wo verschiedene Ressourcen zu finden sind, als die einfachen Optionen url und download_url bieten.

python_requires:

Eine Zeichenfolge, die einem Versionsspezifizierer (wie in PEP 440 definiert) für die Python-Version entspricht und zum Angeben des in PEP 345 definierten Requires-Python verwendet wird.

setup_requires:

Eine Zeichenfolge oder eine Liste von Zeichenfolgen, die angeben, welche anderen Distributionen vorhanden sein müssen, damit das Setup-Skript ausgeführt werden kann. setuptools versucht, diese zu erhalten (sogar so weit, dass sie mit EasyInstall heruntergeladen werden), bevor der Rest des Setup-Skripts oder der Befehle verarbeitet wird. Dieses Argument wird benötigt, wenn Sie distutils-Erweiterungen als Teil Ihres Erstellungsprozesses verwenden. Zum Beispiel Erweiterungen, die setup () - Argumente verarbeiten und in EGG-INFO-Metadatendateien umwandeln. (Hinweis: In setup_requires aufgeführte Projekte werden NICHT automatisch auf dem System installiert, auf dem das Setup-Skript ausgeführt wird. Sie werden einfach in das Verzeichnis ./.eggs heruntergeladen, wenn sie nicht bereits lokal verfügbar sind. Wenn Sie möchten, dass sie installiert werden Sie sollten nicht nur verfügbar sein, wenn das Setup-Skript ausgeführt wird, sondern auch zu install_requires und setup_requires hinzugefügt werden.)

test_loader:

Wenn Sie andere Methoden zum Ausführen von Tests als die normalerweise von setuptools verwendeten verwenden möchten, können Sie in diesem Argument einen Modulnamen und einen Klassennamen angeben. Die benannte Klasse muss ohne Argumente instanziierbar sein und ihre Instanzen müssen die loadTestsFromNames () -Methode unterstützen, wie sie in der TestLoader-Klasse des Python unittest-Moduls definiert ist. Setuptools besteht nur einen Testnamen im Namenargument: den Wert, der für das Argument test_suite angegeben wird. Der von Ihnen angegebene Loader kann diese Zeichenfolge beliebig interpretieren, da keine Einschränkungen hinsichtlich der in einer test_suite-Zeichenfolge enthaltenen Zeichenfolge bestehen. Der Modulname und der Klassenname müssen durch Folgendes getrennt werden :. Der Standardwert dieses Arguments ist "setuptools.command.test: ScanningLoader". Wenn Sie das Standardverhalten "unittest" verwenden möchten, können Sie "unittest: TestLoader" angeben. stattdessen als Ihr test_loader-Argument. Dies verhindert das automatische Scannen von Submodulen und Subpaketen. Das hier angegebene Modul und die Klasse können in einem anderen Paket enthalten sein, sofern Sie die Option tests_require verwenden, um sicherzustellen, dass das Paket mit der Loader-Klasse verfügbar ist, wenn der Testbefehl ausgeführt wird.

test_suite:

Eine Zeichenfolge, die eine unittest.TestCase-Unterklasse (oder ein Paket oder Modul, das eine oder mehrere von ihnen oder eine Methode einer solchen Unterklasse enthält) benennt oder eine Funktion benennt, die ohne Argumente aufgerufen werden kann und eine unittest.TestSuite zurückgibt. Wenn die benannte Suite ein Modul ist und das Modul über eine zusätzliche_tests () -Funktion verfügt, wird sie aufgerufen und die Ergebnisse werden zu den auszuführenden Tests hinzugefügt. Wenn die genannte Suite ein Paket ist, werden alle Submodule und Unterpakete rekursiv zur gesamten Testsuite hinzugefügt. Wenn Sie dieses Argument angeben, können Sie mit dem Befehl test die angegebene Testsuite ausführen, z. B. über setup.py test. Weitere Informationen finden Sie im Abschnitt zum Testbefehl unten.

tests_require:

Wenn für die Tests Ihres Projekts ein oder mehrere zusätzliche Pakete neben den für die Installation erforderlichen erforderlich sind, können Sie diese Option verwenden, um sie anzugeben. Es sollte eine Zeichenfolge oder eine Liste von Zeichenfolgen sein, die angeben, welche anderen Verteilungen vorhanden sein müssen, damit die Tests des Pakets ausgeführt werden können. Wenn Sie den Testbefehl ausführen, versucht setuptools, diese abzurufen (sogar so weit, dass sie mit EasyInstall heruntergeladen werden). Beachten Sie, dass diese erforderlichen Projekte nicht auf dem System installiert werden, auf dem die Tests ausgeführt werden, sondern nur dann in das Setup-Verzeichnis des Projekts heruntergeladen werden, wenn sie nicht bereits lokal installiert sind.

use_2to3:

Konvertieren Sie den Quellcode während des Erstellungsprozesses mit 2to3 von Python 2 nach Python 3. Weitere Informationen finden Sie unter Unterstützung von Python 2 und Python 3 mit Setuptools.

use_2to3_exclude_fixers :

Standardmäßig werden bei der Konvertierung alle Fixierer im lib2to3.fixersPaket verwendet. Um zusätzliche Fixierer zu verwenden, kann der Parameter use_2to3_fixersauf eine Liste von Namen von Paketen gesetzt werden, die Fixierer enthalten. Um Fixierer auszuschließen, kann der Parameter use_2to3_exclude_fixersauf Fixierernamen gesetzt werden, die übersprungen werden sollen.

use_2to3_fixers :

Eine Liste von Modulen zur Suche nach zusätzlichen Fixierern, die während der 2to3-Konvertierung verwendet werden sollen. Weitere Informationen finden Sie unter Unterstützung von Python 2 und Python 3 mit Setuptools.

zip_safe:

Ein boolesches Flag (True oder False), das angibt, ob das Projekt sicher installiert und aus einer Zip-Datei ausgeführt werden kann. Wenn dieses Argument nicht angegeben wird, muss der Befehl bdist_egg jedes Mal, wenn ein Ei erstellt wird, den gesamten Inhalt Ihres Projekts auf mögliche Probleme analysieren.



Erweiterungen

Das Erstellen einer Erweiterung (anstelle eines reinen Python-Moduls) ist komplizierter, da Sie im Wesentlichen die erforderlichen Parameter und Argumente angeben müssen, um die Erweiterung erfolgreich aus CQuelldateien zu erstellen. Dies erfolgt über das ext_modulesSchlüsselwort, das nichts anderes als eine Liste von ExtensionInstanzen ist (aus denen importiert werden kann distutils.core). Die vom ExtensionKlassenkonstruktor akzeptierten Schlüsselwortargumente sind der Eingabevektor zum Festlegen der Erstellungsschritte zum Kompilieren der Erweiterung.

Da es sich bei dieser Frage setuptools.setup()speziell um eine Frage handelt , werde ich nur die Definition von einschließen ext_modules, aber die Dokumentation für die ExtensionKlasse enthält alle Details. Der Vollständigkeit halber ist dies die Liste der akzeptierten Schlüsselwörter für den ExtensionKonstruktor:

    extension_keywords = ('name', 'sources', 'include_dirs',
                          'define_macros', 'undef_macros',
                          'library_dirs', 'libraries', 
                          'runtime_library_dirs', 'extra_objects', 
                          'extra_compile_args', 'extra_link_args',
                          'swig_opts', 'export_symbols', 'depends', 
                          'language')



ext_modules :

Eine Liste von Erweiterungsinstanzen, von denen jede ein einzelnes Erweiterungsmodul beschreibt. Angenommen, Ihre Distribution enthält eine einzelne Erweiterung namens foo, die von foo.c. implementiert wird. Wenn keine zusätzlichen Anweisungen für den Compiler / Linker erforderlich sind, ist die Beschreibung dieser Erweiterung recht einfach:

   from distutils.core import setup, Extension
   setup(name='foo',
         version='1.0',
         ext_modules=[Extension('foo', ['foo.c'])],
         )



Sonstiges

Schließlich gibt es noch mehr kwargs, die in setuptools.distund anderswo implementiert sind, aber aus irgendeinem Grund nie zu einer der Hauptdokumentationen zu setuptools / distutils hinzugefügt wurden:


Funktionen (veraltet):

Ein Wörterbuch, das Optionsnamen 'setuptools.Feature'-Objekten zuordnet. Features sind ein Teil der Distribution, der basierend auf Benutzeroptionen, Abhängigkeiten zwischen Features und Verfügbarkeit auf dem aktuellen System ein- oder ausgeschlossen werden kann. Ausgeschlossene Funktionen werden in allen Setup-Befehlen, einschließlich Quell- und Binärverteilungen, weggelassen, sodass Sie mehrere Verteilungen aus demselben Quellbaum erstellen können.

long_description_content_type (Per "Erstellen einer PyPI-freundlichen README-Datei ):

Legen Sie für das Markup Ihrer README-Datei einen akzeptierten Wert im Content-Type-Stil fest, z. B. text / plain, text / x-rst (für reStructuredText) oder text / markdown.

provides_extras (Per PEP566, gelistet als "Bietet-Extra" ):

Eine Zeichenfolge, die den Namen einer optionalen Funktion enthält. Muss eine gültige Python-Kennung sein. Kann verwendet werden, um eine Abhängigkeit davon abhängig zu machen, ob die optionale Funktion angefordert wurde.

Z4-Tier
quelle
Was ist mit den long_description_content_typeund runtime_library_dirsund convert_2to3_doctestsArgumenten?
Cowlinator
1
Ich habe den Inhalt hinzugefügt, der setuptoolsdiese Argumente enthält. Ich habe den zweiten Link, den Sie gepostet haben, anfangs als "Neue oder geänderte Instrumente in dieser Version von Setuptools" gelesen, aber bei näherer Betrachtung denke ich, dass er tatsächlich "neu oder verändert im Vergleich zu dem, was in Distutils ist" bedeutet, also denke ich, dass dies tatsächlich ein ist vollständige Liste.
Z4-Tier
1
Ich fügte hinzu use_2to3_exclude_fixersund long_description_content_typeda sie beide Schlüsselwörter sind setuptools.setup(). Ich habe auch hinzugefügt features, provides_exrtrasund ext_modules. Die library_dirsParameter sind eigentlich keine Schlüsselwörter für setup()sich. Sie sind separate Schlüsselwörter für den ExtensionKonstruktor, für die ich eine kurze Erklärung hinzugefügt habe, aber die vollständigen Details passen wahrscheinlich nicht in eine Antwort auf diese Frage, da es sich speziell um setuptools.setup()kwargs handelt.
Z4-Tier
1
In diesem Beispiel wird das Wörterbuch benannt, extrasaber dann wird der Aufruf von setup()mit extras_requiredem in dieser Liste enthaltenen kwarg-Schlüssel übergeben .
Z4-Tier
1
Es gab einige zusätzliche Schlüsselwörter, die ich hinzugefügt habe: package_dir, package_data, py_modules und data_files.
Z4-Tier