[Python-de] requirements.txt (Was: Django Portierungstrategy???)

Christopher Arndt chris at chrisarndt.de
Mo Apr 25 09:39:28 EDT 2016


Am 25.04.2016 um 11:45 schrieb Thomas Güttler:
> Abhängigkeiten werden in Python so weit ich weiß über install_requires
> in setup.py definiert.

Jein. install_requires setup.py definiert "abstrakte" Abhängigkeiten.
Feste Versionsnummern sind dort nach Möglichkeit zu vermeiden, wenn
nötig sollte man darin höchstens Minimal- oder Maximalversionsnummern
und direkte Abhängigkeiten festlegen.

Die setup,py ist m.E. vorrangig für Python-*Pakete* gedacht. Deswegen
sollte man davon ausgehen, dass sie in unterschiedlichen Umgebungen und
Nutzungsszenarien ausgeführt wird (z.B. beim Paketbau für
Distributionen; beim Entwickler, wenn er sein virtualenv für ein Projekt
füllt; beim Testen mit tox usw.)

Die requirements.txt ist auf der Projekt bzw. Applikationsebene
angesiedelt. In ihr kann man Versionen pinnen und definiert sozusagen
die genaue Ausführungsumgebung für die Anwendung. Es sind dort i.d.R.
alle notwendigen Pakete, also auch die Abhängigkeiten von Abhängigkeiten
(rekursiv) aufgeführt.

Es gibt Tools, mit denen man die abstrakten Abhängigkeiten aus der
requirements.txt (halb-)automatisch extrahieren kann. Eine naive
Implementierung zum Einbinden in die setup.py, die für einfache Fälle
ausreicht, habe ich zum Beispiel hier notiert:

https://gist.github.com/SpotlightKid/486c711a3c14c70edb1a

Besser wäre m.E. aber, ein entsprechendes Skript in den Release-Prozess
zu integrieren, das dann auch indirekte Abhängigkeiten bereinigt usw.

Weitere Gedanken zum Thema:

https://caremad.io/2013/07/setup-vs-requirement/


Gruß, Chris

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 979 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://mail.python.org/pipermail/python-de/attachments/20160425/ba54f3a5/attachment.sig>


Mehr Informationen über die Mailingliste python-de