[Python-de] setuptools to the rescue?

Joachim Saul list at jsaul.de
Fre Jan 13 11:41:32 CET 2006


* Diez B. Roggisch [2006-01-13 10:39]:
> > Ich weiß ja nicht, ob dein Code jenseits von Unix/Linux portabel
> > sein muss. Falls nicht, würde ich einfach "make" nehmen. Bzw.
> > setup.py von make aufrufen lassen. Abhängigkeiten in Makefiles zu
> > formulieren ist erheblich einfacher als mit setup.py-Skripten.
>
> Kann sein - aber ueblicherweise hat python auch weniger dieser Abhaengigkeiten
> - als dynamische Sprache. Und make selber ist ja nicht so der Brueller -
> sonst gaebe es wohl kaum autoconf/automake :)

[ ] Du hast schon mal Python-Erweiterungen in C geschrieben.
[ ] Du hast Make verstanden
[ ] Du hast Erfahrungen mit Autoconf

Die Existenz von Autoconf beruht nicht auf Beschränkungen bei
make. Autoconf wird verwendet, um Makefiles zu konfigurieren in
Fällen, wo dies manuell nicht so einfach wäre bzw. um dem User die
Installation zu vereinfachen und auf evtl. noch fehlende Software
hinzuweisen. Das hat aber mit der Funktionalität von make nichts
zu tun.

Hier ging es um Abhängigkeiten wie z.B. "Erzeuge mir die Tabelle
X, damit sie anschließend mit installert werden kann". Wenn die
Tabelle erst exisiert, ist ihre Installation mit distutils
trivial, aber um sie *vor* install zu erzeugen, erfordert es
erhebliche und riskante Modifikationen am setup.py, da distutils
selbst diese Funktionalität leider nicht mitbringt.

> > Mal
> > davon abgesehen, dass dir deine nicht unbedingt mit Python und
> > der Bedienung von setup.py-Skripten vertrauten User das wesentlich
> > intuitivere Installieren mittels "make" bzw. "make install" danken
> > werden.
>
> Wohl kaum - _wenn_, dann sind wohl eher autoconf/automake, besser noch rpm
> oder debian-pakete das Mittel der Wahl.  Ich kann mich kaum erinnern wann ich
> das letzte mal "nur" make aufgerufen habe - ausser fuer eigene, kleine und
> nicht zur Distribution gedachte Projekt (die natuerlich in C geschrieben
> waren)

Warum nicht? Ich habe gerade ein Paket übersetzt, welches GTK+
verwendet. Ich hatte instinktiv nach einem configure-Skript
gesucht - Fehlanzeige. Also "make" und voila! Dann "make install"
und gut ist. Wäre GTK+ nicht vorhanden gewesen, hätte ich
natürlich in die Röhre geschaut. Mit einem .deb oder .rpm aber
evtl. ebenfalls.

> Davon ab: ein README mit
>
> python setup.py install
>
> drin ist einfach  -

Ein Makefile mit

    install:
	python setup.py install

ist noch einfacher.

> und auch unter Windows verwendbar :)

Falls der Python-Code unter Windows läuft. ;-) Und sobald
C-Erweiterungen im Spiel sind, ist das leider oft auch nicht mehr
so einfach.

Gruß,
Joachim