2016-12-21 1 views

Antwort

1

Ich bin mir nicht sicher über die offizielle Verwendung, aber ich verwende extras_require(), bedingte Abhängigkeiten angeben.

In meinem Fall -

extras_require={":python_version<'3.5'": ["scandir"]} 

Theoretisch sollte dies über install_requires() selbst vorhanden sein, aber es funktioniert nur, wie es sollte Version X.XX beginnen (mehrere Ansprüche an die beginnt Version es richtig hinzubekommen) von setuptools.

Dieser Artikel erklärt, es schön: Conditional Python Dependencies

3

Nach dem setuptools documentation,

extras_require
ein Wörterbuch Mapping Namen von „Extras“ (optional Funktionen Ihres Projekts) in Strings oder Listen von Zeichenketten Geben Sie an, welche anderen Distributionen zur Unterstützung dieser Funktionen installiert werden müssen.

und

install_requires
Eine Zeichenfolge oder Liste von Strings spezifizieren, was andere Distributionen installiert werden müssen, wenn diese ist.

Der Abschnitt über Declaring “Extras” (optional features with their own dependencies) erarbeitet hierzu:

Manchmal ist ein Projekt „empfohlen“ Abhängigkeiten hat, die nicht für alle Anwendungen des Projekts erforderlich sind. Ein Projekt bietet beispielsweise eine optionale PDF-Ausgabe, wenn ReportLab installiert ist, und eine Unterstützung für reStructuredText, wenn docutils installiert ist. Diese optionalen Funktionen werden "Extras" genannt, und setuptools ermöglicht Ihnen auch, ihre Anforderungen zu definieren. Auf diese Weise können andere Projekte, die diese optionalen Funktionen erfordern, die zusätzlichen Anforderungen erzwingen, indem sie die gewünschten Extras in ihrer benennen.

Der größte Unterschied ist, dass die Anforderungen in extras_require werden nur bei Bedarf installiert:

Diese Anforderungen werden nicht automatisch installiert werden, wenn ein anderes Paket von ihnen abhängt (direkt oder indirekt) durch den gewünschten einschließlich „ Extras "in eckigen Klammern nach dem zugehörigen Projektnamen. (Oder wenn die Extras wurden in einer Anforderung spec auf der Easyinstall Befehlszeile aufgelistet.)

Um es zusammenzufassen:

  • Wenn die Abhängigkeit notwendig ist Ihr Projekt auszuführen, setzen Sie es in install_requires . Sie werden immer installiert sein.
  • Wenn Ihr Projekt optionale Funktionen enthält, die Abhängigkeiten hinzufügen, legen Sie diese Abhängigkeiten in extras_require. Diese Abhängigkeiten werden nicht installiert, es sei denn, diese Funktion wird vom Benutzer oder einem anderen Paket aufgerufen.