Wie sollte man in Python eigentlich die Scripte versionieren ?
Gibt es da schon direkt für Python was, oder sollte man ein externes Programm wie ein svn zB git dafür nehmen ?
Versionierung
Es gibt Mercurial und Bitbucket, git und Github
the more they change the more they stay the same
@Xynon1: Warum sollte es da speziell etwas für Python geben? Sind doch allgemein betrachtet einfach nur Quelltextdateien die sich aus Sicht eines VCS nicht von vielen anderen Programmierpsrachen/Quelltexten unterscheiden.
Es gibt mit Mercurial ein verteiltes Versionierungssystem was *in* Python geschrieben ist. Aber nicht speziell *für* Python.
Es gibt mit Mercurial ein verteiltes Versionierungssystem was *in* Python geschrieben ist. Aber nicht speziell *für* Python.
@Xynon1: Zudem hängt die Wahl des VCS und des „Drumherums“ auch stark von den Anforderungen ab. GitHub und BitBucket sind keine Allzweckwaffen und keinesfalls für jedes Projekt die geeignete Wahl.
Danke mehr wollte ich gar nicht wissen.
Aber ein was wundert mich noch wie wird diese variable in quelltexten benutzt __version__, bzw. wozu ?
Aber ein was wundert mich noch wie wird diese variable in quelltexten benutzt __version__, bzw. wozu ?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, wenn Du ein fremdes Modul importierst kannst Du darüber prüfen, ob die richtige Version vorliegt und ggf. eine Fehlermeldung ausgeben, so dass der Benutzer merkt, dass eine benötigte Library nicht den benötigten Stand bietet, oder aber Du kannst Dann einen workaround anbieten, auf den Du bei korrekter Version verzichten würdest.Xynon1 hat geschrieben:Danke mehr wollte ich gar nicht wissen.
Aber ein was wundert mich noch wie wird diese variable in quelltexten benutzt __version__, bzw. wozu ?
Unabhängig davon stellt es eben eine Möglichkeit dar, im Quelltext anzugeben, um welche Version es sich handelt. Ist doch weit besser, als das nur in einer README im selben Verzeichnis, den Verzeichnisnamen o.ä. zu handhaben.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Gibt es bestimmt - bei vielen VCS kann man sich Hooks schreiben. Damit könnte man natürlich die nun erreichte Version, z.B. beim Taggen, in sein Python-Script reinschreiben lassen. Nur fraglich, ob man das immer auch möchte oder ob sich der Aufwand lohnt.Xynon1 hat geschrieben:Ok, aber diese muss man immer manuell mitführen, oder ?
Gibt es hier eventuell möglichkeiten diese automatisiert zu verwalten ?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Na, den Zusammenhang zu "__version__" kann ich da jetzt nicht rauslesenXynon1 hat geschrieben:Deswegen ja meine ursprüngliche Frage.

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Naja, in einem direkten für Pythonscript Verwaltung wäre das warscheinlich dabei gewesen, aber ich wollte es nicht gleich darauf spezifizieren.
@Xynon1: `__version__` wird von einigen Werkzeugen, zum Beispiel solche die Dokumentation aus den Modulen herausziehen, besonders behandelt. So zum Beispiel auch das `pydoc`-Modul in der Standardbibliothek. Aus Sicht von Python ist das einfach nur ein Attribut wie jedes andere auch.
Wobei das eine andere Version ist, als die bei Versionierungssystemen. Es sei denn man führt die Revision des Versionierungssystems auch in der Produktversion ständig mit. Was ich persönlich nicht so handhabe. `__version__` wird bei mir nur angefasst, wenn tatsächlich ein neues Produktrelease ansteht, beziehungsweise kurz danach, damit die Entwicklerversion eine andere Versionsnummer als das letzte Release hat.
Man könnte das natürlich automatisieren wenn man ein neues Release in der Versionskontrolle "tag"t, dass vorher automatisch die `__version__` angepasst wird, das ist im Grunde ja aber auch wieder nichts Python-spezifisches. Auch in anderen Programmiersprachen hat man oft irgendwo in einer Textdatei bei einer "Variablenzuweisung" eine Versionsnummer stehen, die bei Releases angepasst werden muss.
Wobei das eine andere Version ist, als die bei Versionierungssystemen. Es sei denn man führt die Revision des Versionierungssystems auch in der Produktversion ständig mit. Was ich persönlich nicht so handhabe. `__version__` wird bei mir nur angefasst, wenn tatsächlich ein neues Produktrelease ansteht, beziehungsweise kurz danach, damit die Entwicklerversion eine andere Versionsnummer als das letzte Release hat.
Man könnte das natürlich automatisieren wenn man ein neues Release in der Versionskontrolle "tag"t, dass vorher automatisch die `__version__` angepasst wird, das ist im Grunde ja aber auch wieder nichts Python-spezifisches. Auch in anderen Programmiersprachen hat man oft irgendwo in einer Textdatei bei einer "Variablenzuweisung" eine Versionsnummer stehen, die bei Releases angepasst werden muss.