Ich versuche, den Unterschied zwischen extras_require()
und install_requires()
in setup.py zu verstehen, konnte es aber nicht bekommen. Beide werden zum Installieren von Python-Abhängigkeiten verwendet, aber was ist der Unterschied zwischen ihnen?Unterschied zwischen extras_require() und install_requires() in setup.py?
Antwort
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
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.
- 1. nicht setup.py Entwicklung verwenden Rad für Install_requires?
- 2. Repository-URL zu install_requires im Projekt setup.py hinzufügen
- 3. Unterschied zwischen 'python setup.py install' und 'pip install'
- 4. Rufen Sie eine andere setup.py in setup.py
- 5. Warum schlägt OSX beim Analysieren des Abschnitts extras_require in meiner Datei setup.py fehl?
- 6. Warum installiert `pip3 numpy` viel schneller als in` install_requires`?
- 7. setup.py Pakete und unicode_literals
- 8. Unterschied zwischen `% in%` und `==`
- 9. Unterschied zwischen $ HOME und '~' (Tilde)?
- 10. Unterschied zwischen $ @ und $! in Perl
- 11. Unterschied zwischen [] und [,,] in Python
- 12. Unterschied zwischen '.' und "." in Java
- 13. Unterschied zwischen $ {} und $() in Bash
- 14. Unterschied zwischen und „-“ in r
- 15. Unterschied zwischen .. und ... in Ruby
- 16. Unterschied zwischen `! == undefined` und` in`
- 17. Unterschied zwischen "" und "" in Python
- 18. Unterschied zwischen = + und + = in Java?
- 19. Unterschied zwischen // und /// in C#
- 20. Unterschied zwischen. und #
- 21. Unterschied zwischen {!! !!} und {{}}
- 22. MySQL: Unterschied zwischen ', `,' und '
- 23. C++ Unterschied zwischen '//' und '///'
- 24. Unterschied zwischen String.Empty und ""
- 25. Unterschied zwischen = und: =
- 26. Abhängig von Git-Repository in setup.py
- 27. Unterschied zwischen Vorzeichen & und *?
- 28. VBA: Unterschied zwischen & und +
- 29. Unterschied zwischen "**/* /" und "** /"?
- 30. Unterschied zwischen $ # und $ {# @}