2011-01-16 8 views
2

Ich habe ein Python-Skript, das den Programmnamen, die Versionsnummer und den Autor ausgibt, wenn es mit Befehlszeilenargumenten wie --help oder --version aufgerufen wird. Derzeit ist diese Information im Python-Skript selbst fest codiert. Aber ich benutze distutils zum Erstellen/Packen der Anwendung, so dass alle diese Informationen bereits in der setup.py vorhanden sind. Ist es möglich, dass distutils Metadaten wie Version und Autorenname/E-Mail in das eingebaute Python-Skript schreibt, so dass ich diese Daten nur in der Datei setup.py verwalten muss? Oder gibt es einen anderen Standardmechanismus, um so etwas zu handhaben?Symbole in Python-Skript auf Verteilung ersetzen

Antwort

3

Tun Sie es andersherum. Fügen Sie die Versionsnummer, den Autorennamen und andere Metadaten, die Sie im Skript benötigen, dem Skript selbst hinzu. Dann import oder execfile() das Skript in setup.py, und verwenden Sie die Metadaten im Skript als Argumente für die setup()-Funktion definiert.

0

Sie könnten immer sed verwenden. Die man-Seite für sed ist Here.

Holen Sie sich das für Windows (wenn Sie Windows verwenden) ist es richtig Here. Es kommt normalerweise vorinstalliert auf Linux, Unix und OS X.

+0

Aber das hat nichts mit Pythons distutils zu tun. Ich möchte vor dem Ausführen von "./setup.py install" keine speziellen Befehle aufrufen. – kayahr

2

Haben Sie eine Datei __version__.py im Stammverzeichnis Ihres Pakets, erstellen Sie sie auf Build mit setup.py und holen Sie die Versionsinformationen für --help oder --version daraus. So rollt Mercurial.

+0

Ja, das ist der beste Weg, es zu tun. Wenn Ihre version.py nur einfache Zuweisungen wie 'version =' 0.1.2'' enthält, kann die Datei auch von bash analysiert werden, was in Situationen hilfreich ist, in denen Sie ein Shell-Skript ausführen müssen kenne die Versionsnummer des Pakets. – bstpierre