Loggen der Versionen eingebundener Module

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Loggen der Versionen eingebundener Module

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: [hidden email]

 

--

--

 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  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Massa, Harald Armin
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 <[hidden email]>

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: [hidden email]

 

--

--

 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  -  [hidden email]
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

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

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: [hidden email]

--

--

 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  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Massa, Harald Armin
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 <[hidden email]>

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: [hidden email]

--

--

 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  -  [hidden email]
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

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Wagner, Frank

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: [hidden email]

 

--

--

 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  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Peter Hoffmann-2
In reply to this post by Wagner, Frank
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  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Massa, Harald Armin
In reply to this post by Wagner, Frank
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

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Wagner, Frank
In reply to this post by Peter Hoffmann-2
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: [hidden email]


--
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  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Wagner, Frank
In reply to this post by Peter Hoffmann-2
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: [hidden email]

-----Ursprüngliche Nachricht-----
Von: [hidden email] [mailto:[hidden email]] 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  -  [hidden email]
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.

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

"Martin v. Löwis"
In reply to this post by Wagner, Frank
> 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

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: Loggen der Versionen eingebundener Module

Ulf Rompe-5
In reply to this post by Wagner, Frank
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


_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de