Ich (versuche) setuptools zu verwenden, um ein Paket zu bauen. Ich habe versucht, eine Versionsnummer major.minor.mercurial_revision
zu verwenden, aber es beschwert sich, dass:Wie man VCS Informationen in setuptools Pakete einbaut
The version specified ('1.0.7ae7970a82c1') is an invalid version, this may
not work as expected with newer versions of setuptools, pip, and PyPI.
Please see PEP 440 for more details.`
Fein. Also schaue ich mir PEP 440 an, die im Grunde sagt "mach das nicht":
As hashes cannot be ordered reliably such versions are not permitted in the
public version field. As with semantic versioning, the public .devN
suffix may be used to uniquely identify such releases for publication,
while the original DVCS based label can be stored in the project metadata.
Ich verstehe die Logik hier. Aber wie kann ich die HG-Revision in den Projekt-Metadaten enthalten? Ich kann keine (aktuelle) Dokumentation dafür finden, was die Argumente zu setup.py:setup()
beinhalten können, aber die Distutils, die ich gefunden habe here scheint kein Feld dafür zu bieten.
Denn dann haben Sie ein bekam führen würde untracked Datei in Ihrem Quellcode, die nicht sehr nett ist, und Ihr Build-Skript muss das "Echo" -Bit tun. Es ist alles nicht Standard und die obige Antwort löst es. – lost
Wenn Sie Revisionsinformationen in Ihr Projekt einbinden - über 'setup.py' oder eine andere Datei - erzeugen Sie diese Datei * offensichtlich als Teil Ihres Veröffentlichungsprozesses. Entweder ist es (a) nicht verfolgt oder (b) du aktualisierst es automatisch als Teil deines Freigabeprozesses. – larsks
Hmm. Du hast natürlich Recht. Tatsächlich sind die Probleme ein wenig orthogonal; Remcos Antwort löst Fehler bei der Annahme meiner Versionsnummer, aber um * Zugriff * auf die Versionsnummer von "innerhalb" des Pakets zu bekommen, braucht man ein '__revision__' oder etwas, was Sie vorschlagen. – lost