Loggen der Versionen eingebundener Module
Hallo Listenmitglieder, wir dürfen nun bei uns im Labor unsere Versuche mit Python automatisieren. Hierzu wurde allerdings gewünscht, dass wir zumindest die von uns geschriebenen und auch weiterentwickelten Module mit Versionen versehen. Das alleine wäre kein Problem da das unser Versionsverwaltungsprogramm ohnehin mit erledigt. Allerdings sollen wir eine Möglichkeit finden, dass jedes Versuchsskript die Versionen der eingebundenen Module/Klassen mit möglichst geringem Aufwand in einem Logfile mit protokolliert. Ich hätte jedes Modul mit einem docstring versehen in dem der Modulname und die Version enthalten sind. Da aber auch Labormitarbeiter Skripte schreiben/verändern soll es eine einfachere Lösung geben als jeden docstring jedes Moduls einzeln auszulesen und in eine Datei zu schreiben. Hier wünsche ich mir etwas einfacheres, aber die richtige Lösung hat sich mir noch nicht offenbart, ich beschäftige mich allerdings auch noch nicht so lange mit Python dass ich schon auf alle Eigenschaften zurückgreifen könnte. Es wäre nett und ich würde mich sehr freuen wenn mir jemand eine Möglichkeit das Problem zu lösen vorschlagen könnte. Vielen Dank bereits im Voraus. Mit freundlichen Grüßen / Kind regards Frank Wagner Entwicklung - Prozesstransmitter WIKA Alexander Wiegand SE & Co. KG Alexander Wiegand-Straße 30 63911 Klingenberg am Main Tel: 09372-132-8995 Fax: 09372-132-9976 E-mail: f.wagner@wika.demailto:m.romstoeck@wika.de -- Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print. -- WIKA Alexander Wiegand SE & Co. KG Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819 Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 4685 Komplementärin: WIKA International SE - Sitz Klingenberg - Amtsgericht Aschaffenburg HRB 10505 Vorstand: Alexander Wiegand Vorsitzender des Aufsichtsrats: Dr. Max Egli Telefon: (09372) 132-0 Internet: www.wika.com -- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
Hallo Frank,
Du hast nichts zu Deinem Versions-Kontroll-System geschrieben, deshalb mal
die Informationen zu Mercurial und SVN:
da gibt es sogenannte "hooks", die bei commit-vorgängen ausgelöst werden.
Hier kannst Du ein Python-Skript einbinden, das was beliebiges tut.
Indemfall wäre das beliebige:
- suche die __init__.py im Modul
- aktualisiere in ihr einen Versionsstring.
- speichere.
Gruß
Harald
2010/12/1 Wagner, Frank
Hallo Listenmitglieder,
wir dürfen nun bei uns im Labor unsere Versuche mit Python automatisieren. Hierzu wurde allerdings gewünscht, dass wir zumindest die von uns geschriebenen und auch weiterentwickelten Module mit Versionen versehen. Das alleine wäre kein Problem da das unser Versionsverwaltungsprogramm ohnehin mit erledigt.
Allerdings sollen wir eine Möglichkeit finden, dass jedes Versuchsskript die Versionen der eingebundenen Module/Klassen mit möglichst geringem Aufwand in einem Logfile mit protokolliert.
Ich hätte jedes Modul mit einem docstring versehen in dem der Modulname und die Version enthalten sind.
Da aber auch Labormitarbeiter Skripte schreiben/verändern soll es eine einfachere Lösung geben als jeden docstring jedes Moduls einzeln auszulesen und in eine Datei zu schreiben.
Hier wünsche ich mir etwas einfacheres, aber die richtige Lösung hat sich mir noch nicht offenbart, ich beschäftige mich allerdings auch noch nicht so lange mit Python dass ich schon auf alle Eigenschaften zurückgreifen könnte.
Es wäre nett und ich würde mich sehr freuen wenn mir jemand eine Möglichkeit das Problem zu lösen vorschlagen könnte.
Vielen Dank bereits im Voraus.
Mit freundlichen Grüßen / Kind regards
Frank Wagner
Entwicklung - Prozesstransmitter
WIKA
Alexander Wiegand SE & Co. KG
Alexander Wiegand-Straße 30
63911 Klingenberg am Main
Tel: 09372-132-8995
Fax: 09372-132-9976
E-mail: f.wagner@wika.de
--
--
P * Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print.*
--
*WIKA Alexander Wiegand SE & Co. KG*
*Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany*
Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819
Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg -
Amtsgericht Aschaffenburg HRA 4685
Komplementärin: WIKA International SE - Sitz Klingenberg -
Amtsgericht Aschaffenburg HRB 10505
Vorstand: Alexander Wiegand
Vorsitzender des Aufsichtsrats: Dr. Max Egli
Telefon: (09372) 132-0
Internet: www.wika.com
-- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
-- GHUM GmbH Harald Armin Massa Spielberger Straße 49 70435 Stuttgart 0173/9409607 Amtsgericht Stuttgart, HRB 734971 - persuadere. et programmare
Hallo Harald, zunächst vielen Dank für die schnelle Antwort. Mit meinem Versions-Kontroll-System (in diesem Falle Perforce) habe ich die Möglichkeit über sogenannte Keyword Expansions an beliebiger Stelle im Code die Versionsnummer (vom Versions-Kontroll-System erzeugt) und viele andere Infos wie z.B. Autor und solche Dinge einzufügen. Mir schwebt eigentlich vor eine Klasse zu schreiben die ich in alle Module einbinde. Diese Klasse hätte die Aufgabe in jedem aufgerufenen Modul den Docstring auszulesen und z. B. alle Modulnamen mit Versionen in eine Logdatei zu schreiben, die dann allerdings im Verzeichnis des aufrufenden Skripts zu liegen kommen soll. Ich bin mir nicht sicher ob das funktionieren kann oder ob es ein praktikabler Weg ist. Womöglich geht es auch viel einfacher und ich sehe die Lösung nicht. Hintergrund ist, dass für jeden Versuch die Versionen der verwendeten Module vorhanden sind um diesen reproduzieren zu können Vielleicht hat einer ja eine Idee oder einen Tipp für mich Mit freundlichen Grüßen / Kind regards Frank Wagner Entwicklung - Prozesstransmitter WIKA Alexander Wiegand SE & Co. KG Alexander Wiegand-Straße 30 63911 Klingenberg am Main Tel: 09372-132-8995 Fax: 09372-132-9976 E-mail: f.wagner@wika.demailto:m.romstoeck@wika.de -- Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print. -- WIKA Alexander Wiegand SE & Co. KG Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819 Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 4685 Komplementärin: WIKA International SE - Sitz Klingenberg - Amtsgericht Aschaffenburg HRB 10505 Vorstand: Alexander Wiegand Vorsitzender des Aufsichtsrats: Dr. Max Egli Telefon: (09372) 132-0 Internet: www.wika.com -- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
Hallo Frank,
an sich sind ja die Versionen der Module nicht soooo entscheidend ... eher,
daß alle Dateien des Moduls in einem bestimmten Stand verwendet werden.
In Mercurial / GIT gibt es einen Revisions-Tag, der eindeutig bezeichnet,
welche RCS-Version das ganze ist.
WENN Du alles in eine Repository (oder möglichst wenige) eincheckst, und
Perforce auch eine solche Revisionskennung hat - reicht es dann nicht, diese
zum Versuch zu speichen? Wenn Du dann den Versuch reproduzieren willst,
einfach den Checkout auf genau diese Revision setzen und gut.
Gruß
Harald
2010/12/1 Wagner, Frank
Hallo Harald,
zunächst vielen Dank für die schnelle Antwort.
Mit meinem Versions-Kontroll-System (in diesem Falle Perforce) habe ich die Möglichkeit über sogenannte Keyword Expansions an beliebiger Stelle im Code die Versionsnummer (vom Versions-Kontroll-System erzeugt) und viele andere Infos wie z.B. Autor und solche Dinge einzufügen.
Mir schwebt eigentlich vor eine Klasse zu schreiben die ich in alle Module einbinde. Diese Klasse hätte die Aufgabe in jedem aufgerufenen Modul den Docstring auszulesen und z. B. alle Modulnamen mit Versionen in eine Logdatei zu schreiben, die dann allerdings im Verzeichnis des aufrufenden Skripts zu liegen kommen soll.
Ich bin mir nicht sicher ob das funktionieren kann oder ob es ein praktikabler Weg ist. Womöglich geht es auch viel einfacher und ich sehe die Lösung nicht.
Hintergrund ist, dass für jeden Versuch die Versionen der verwendeten Module vorhanden sind um diesen reproduzieren zu können
Vielleicht hat einer ja eine Idee oder einen Tipp für mich
Mit freundlichen Grüßen / Kind regards
Frank Wagner
Entwicklung - Prozesstransmitter
WIKA
Alexander Wiegand SE & Co. KG
Alexander Wiegand-Straße 30
63911 Klingenberg am Main
Tel: 09372-132-8995
Fax: 09372-132-9976
E-mail: f.wagner@wika.de
--
--
P * Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print.*
--
*WIKA Alexander Wiegand SE & Co. KG*
*Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany*
Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819
Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg -
Amtsgericht Aschaffenburg HRA 4685
Komplementärin: WIKA International SE - Sitz Klingenberg -
Amtsgericht Aschaffenburg HRB 10505
Vorstand: Alexander Wiegand
Vorsitzender des Aufsichtsrats: Dr. Max Egli
Telefon: (09372) 132-0
Internet: www.wika.com
-- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
-- GHUM GmbH Harald Armin Massa Spielberger Straße 49 70435 Stuttgart 0173/9409607 Amtsgericht Stuttgart, HRB 734971 - persuadere. et programmare
Hallo Harald, im Prinzip hast Du recht, allerdings sollen die Skripte, welche den Versuch steuern nicht in Perforce versioniert werden, da von diesen Skripten keine weiteren Versionen zu erwarten sind. Diese werden lediglich zur Versuchsdokumentation gespeichert um diesen wiederhohlen zu können. Anders bei den von uns verwendeten Modulen. Diese stellen im Prinzip den Zugriff auf diverse Gerätschaften wie Netzteile, Multimeter, Klimaschränke uvm. dar. Diese werden je nach Bedarf um weitere Funktionen ergänzt, da es einen zu großen Zeitaufwand mit sich bringen würde ein Multimeter wie z. B. ein Keithley2000 mit seiner kompletten Funktionalität abbilden zu müssen. Aus diesem Grund werden nur die Module in der Versionsverwaltung gehalten die Skripte aber nicht, was die von Dir zuletzt beschriebene Lösung vorgesehen hätte wenn ich das richtig verstanden habe? Mit freundlichen Grüßen / Kind regards Frank Wagner Entwicklung - Prozesstransmitter WIKA Alexander Wiegand SE & Co. KG Alexander Wiegand-Straße 30 63911 Klingenberg am Main Tel: 09372-132-8995 Fax: 09372-132-9976 E-mail: f.wagner@wika.demailto:m.romstoeck@wika.de -- Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print. -- WIKA Alexander Wiegand SE & Co. KG Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819 Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 4685 Komplementärin: WIKA International SE - Sitz Klingenberg - Amtsgericht Aschaffenburg HRB 10505 Vorstand: Alexander Wiegand Vorsitzender des Aufsichtsrats: Dr. Max Egli Telefon: (09372) 132-0 Internet: www.wika.com -- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
Hallo Frank, Aus diesem Grund werden nur die Module in der Versionsverwaltung gehalten
die Skripte aber nicht, was die von Dir zuletzt beschriebene Lösung vorgesehen hätte wenn ich das richtig verstanden habe?
nicht wirklich. Wenn nur die Version der Module relevant ist, dann logst Du einfach den/die Revisions-Kenner der Module zum Skriptlauf. Dafür gibt es ja evtl. Python-Bindings, so daß Du in den Skripten etwas wie
import perforce_helper mylogger.log(perforce_helper.get_moduls_revision_tag()) einbindest. ALLERDINGS würde ich wetten, daß es auch von den Skripten mehr als eine Version gibt ... die im Bestfall in Do-It-Yourself-Versionsverwaltungen ala "mit Datum bezeichneten Dateinamen" oder "mit Datum bezeichneten Ordnern" abgelegt sind :) In dem Fall würd ich einfach alles ins Revisions-System einspielen ... aber ich bin auch im Mercurial-denken, wo es keine kaufmännischen Begrenzungen gibt (und RCS total bequem ist, weil keine Locks etc.) Gruß Harald -- GHUM GmbH Harald Armin Massa Spielberger Straße 49 70435 Stuttgart 0173/9409607 Amtsgericht Stuttgart, HRB 734971 - persuadere. et programmare
Hallo Frank, die Version deiner Module sollte wie in PEP8[1] unter Version Boookkeeping beschrieben in einer Variable __version__ stehen. Wenn ihr Subversion oder CVS benutzt könnt ihr dafür Keyword Substitution nehmen. Also einfach unter den Docstring folgendes einfügen: """barmodule.py docstring""" __version__ = "$Revision: 86849 $" Um die Versionsnummern zu loggen würde ich das Standard python logging Modul verwenden [3]. Dazu dann unter __version__ noch folgendes schreiben: import logging version_logger = logging.getLogger('VERSION') version_logger.info(__version__) Jetzt muss noch im Versuchsskript der logger konfiguriert und die anderen Modul importiert werden: import logging format = "%(asctime)s - %(pathname)s %(name)s - %(message)s" logging.basicConfig(level=logging.INFO, format=format) import barmodule Wenn du jetzt python bar.py aufrufst solltest du folgende Ausgabe bekommen: 2010-12-01 18:01:16,260 - foo.py VERSION - 1.0.5 2010-12-01 18:01:16,260 - /tmp/py/barmodule.py VERSION - 1.4.5 In der Konfiguration des Loggings kannst du die Ausgabe auch in eine Datei umleiten. Viele Grüße, Peter [1] http://www.python.org/dev/peps/pep-0008/ [2] http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html [3] http://docs.python.org/library/logging.html
Hallo, vielen Dank für die zahlreichen Antworten und Vorschläge. Ich denke ich habe, dank Euch, jetzt einige Ansatzpunkte mit denen mein Vorhaben verwirklichen kann. Vielen Dank nochmals für die schnelle Hilfe Mit freundlichen Grüßen / Kind regards Frank Wagner Entwicklung - Prozesstransmitter WIKA Alexander Wiegand SE & Co. KG Alexander Wiegand-Straße 30 63911 Klingenberg am Main Tel: 09372-132-8995 Fax: 09372-132-9976 E-mail: f.wagner@wika.de -- Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print. -- WIKA Alexander Wiegand SE & Co. KG Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819 Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 4685 Komplementärin: WIKA International SE - Sitz Klingenberg - Amtsgericht Aschaffenburg HRB 10505 Vorstand: Alexander Wiegand Vorsitzender des Aufsichtsrats: Dr. Max Egli Telefon: (09372) 132-0 Internet: www.wika.com -- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
Hallo, ich habe nach Peters Anleitung das Logging meiner Python Module implementiert und es funktionierte auch wie beabsichtigt. Allerding möchte ich die Ausgabe meiner Loggerei in einem Logfile festhalten. Also hab ich die Zeile der Konfiguration wie folgt umgeändert: logging.basicConfig(filename="MODULVERSIONS.LOG", filemode="w", level=logging.INFO, format=format) Führe ich das Skript aus ist hinterher nirgends eine Datei "MODULVERSIONS.LOG" zu finden, es gibt aber auch keine Fehlermeldung bei der Ausführung. Wo, wenn nicht im Verzeichnis des aufrufenden Skriptes würde denn die Logdatei geschrieben werden? Mit freundlichen Grüßen / Kind regards Frank Wagner Entwicklung - Prozesstransmitter WIKA Alexander Wiegand SE & Co. KG Alexander Wiegand-Straße 30 63911 Klingenberg am Main Tel: 09372-132-8995 Fax: 09372-132-9976 E-mail: f.wagner@wika.de -----Ursprüngliche Nachricht----- Von: python-de-bounces@python.net [mailto:python-de-bounces@python.net] Im Auftrag von Peter Hoffmann Gesendet: Mittwoch, 1. Dezember 2010 18:06 An: Die Deutsche Python Mailingliste Betreff: Re: [Python-de] Loggen der Versionen eingebundener Module Hallo Frank, die Version deiner Module sollte wie in PEP8[1] unter Version Boookkeeping beschrieben in einer Variable __version__ stehen. Wenn ihr Subversion oder CVS benutzt könnt ihr dafür Keyword Substitution nehmen. Also einfach unter den Docstring folgendes einfügen: """barmodule.py docstring""" __version__ = "$Revision: 86849 $" Um die Versionsnummern zu loggen würde ich das Standard python logging Modul verwenden [3]. Dazu dann unter __version__ noch folgendes schreiben: import logging version_logger = logging.getLogger('VERSION') version_logger.info(__version__) Jetzt muss noch im Versuchsskript der logger konfiguriert und die anderen Modul importiert werden: import logging format = "%(asctime)s - %(pathname)s %(name)s - %(message)s" logging.basicConfig(level=logging.INFO, format=format) import barmodule Wenn du jetzt python bar.py aufrufst solltest du folgende Ausgabe bekommen: 2010-12-01 18:01:16,260 - foo.py VERSION - 1.0.5 2010-12-01 18:01:16,260 - /tmp/py/barmodule.py VERSION - 1.4.5 In der Konfiguration des Loggings kannst du die Ausgabe auch in eine Datei umleiten. Viele Grüße, Peter [1] http://www.python.org/dev/peps/pep-0008/ [2] http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html [3] http://docs.python.org/library/logging.html _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de -- Bevor Sie diese E-Mail ausdrucken, überlegen Sie bitte, ob dies wirklich erforderlich ist. Please think before you print. -- WIKA Alexander Wiegand SE & Co. KG Alexander-Wiegand-Straße 30 - 63911 Klingenberg - Germany Kommanditgesellschaft: Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 1819 Komplementärin: WIKA Verwaltungs SE & Co. KG - Sitz Klingenberg - Amtsgericht Aschaffenburg HRA 4685 Komplementärin: WIKA International SE - Sitz Klingenberg - Amtsgericht Aschaffenburg HRB 10505 Vorstand: Alexander Wiegand Vorsitzender des Aufsichtsrats: Dr. Max Egli Telefon: (09372) 132-0 Internet: www.wika.com -- The information contained in this E-Mail and any attached files are strictly confidential and may be subject to legal privilege. If you are not the intended recipient, his representative or the person responsible for delivering the message to the intended recipient, be advised that you have received this message in error and that any dissemination, copying or use of this message or attachment is strictly forbidden, as is the disclosure of the information therein. If you have received this E-Mail in error, please notify us immediately by E-Mail or telephone and delete this message and all its attachments subsequently. All reasonable precautions have been taken to ensure no viruses are present in this E-Mail.
Am 06.12.2010 13:26, schrieb Wagner, Frank:
logging.basicConfig(filename="MODULVERSIONS.LOG", filemode="w", level=logging.INFO, format=format)
Führe ich das Skript aus ist hinterher nirgends eine Datei "MODULVERSIONS.LOG" zu finden, es gibt aber auch keine Fehlermeldung bei der Ausführung.
Wo, wenn nicht im Verzeichnis des aufrufenden Skriptes würde denn die Logdatei geschrieben werden?
Im während des AUfrufs aktuellen Arbeitsverzeichnis. Möchtest Du es stattdessen beim Script haben, müsstest Du es etwa so schreiben: import os import sys filename = os.path.join(sys.path[0], "MODULVERSIONS.LOG") logging.basicConfig(filename=filename, filemode="w", level=logging.INFO, format=format) -- [x] u1f
Ich hätte jedes Modul mit einem docstring versehen in dem der Modulname und die Version enthalten sind.
Auch wenn die Sache vielleicht schon erledigt ist: ich nicht. Vielmehr hätte ich per Perforce-Kommandozeile die Versionsnummer jeder relevanten Datei ermittelt. Das ist etwas aufwändiger zu schreiben, vermeidet aber, dass man alle Module ändern muss. Wie's in Perforce geht, weiß ich nicht; in Subversion würde ich für jede Datei "LANG=C svn info" aufrufen und dann die Revision-Zeile raussuchen. Das kann man einmal ganz am Anfang des Experiments machen (aber nachdem alle benötigten Module importiert wurden); man geht über sys.modules, nimmt jeweils __file__, und testet, ob es eine Perforce-verwaltete Datei ist (.p4-Verzeichnis oder so). Falls ja, ruft man "p4 getStatusOfThisFilePleaseAtLeastVersionNumber". Ciao, Martin
участники (5)
-
"Martin v. Löwis"
-
Massa, Harald Armin
-
Peter Hoffmann
-
Ulf Rompe
-
Wagner, Frank