Seite 1 von 1

cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 09:26
von noisefloor
Hallo,

wollte eben die Laufzeit etc. von einem Python-Programm messen, mittels cProfile.

Der Aufruf

Code: Alles auswählen

python -m cProfile meinProg.py
beschwert sich, dass `pstats` nicht importierbar ist:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File "/usr/lib/python2.6/cProfile.py", line 190, in <module>
    main()
  File "/usr/lib/python2.6/cProfile.py", line 183, in main
    run('execfile(%r)' % (sys.argv[0],), options.outfile, options.sort)
  File "/usr/lib/python2.6/cProfile.py", line 36, in run
    result = prof.print_stats(sort)
  File "/usr/lib/python2.6/cProfile.py", line 80, in print_stats
    import pstats
ImportError: No module named pstats
Nach meinem Verständnis von dieser Seite ist das aber ein Standard-Modul. Manuelles Laden via `import ...` gibt den gleichen Fehler.

Python-Version ist 2.6.5 (Original aus Ubuntu 10.04).

Hat einer eine Idee, woran das liegt? Oder kennt einen alternativen Weg? Von Interesse ist die reine Laufzeit des Skripts "meinProg.py" (in Sekunden oder was auch immer).

Gruß, noisefloor

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 09:40
von BlackJack
@noisefloor: Frag mich nicht was die Ubuntu-Leute dazu getrieben hat, aber das ist ein eigenes Paket: `python-profile` oder so ähnlich.

Wenn nur die Gesamtlaufzeit gefragt ist, könnte man auch einfach auf der Shell `time` verwenden. Die Bash hat den Befehl eingebaut, es gibt aber auch `/usr/bin/time` was einen anderen Funktionsumfang hat. Die reine Zeit können aber beide messen.

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 10:51
von cofi
Das Paket heisst `python-profiler` und das haben schon die Debian-Leute verbrochen. :evil:

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 11:51
von Trundle
Und das "was die Leute dazu getrieben hat" ist auch ganz einfach: Das "profile"- und das "pstats"-Modul stehen unter anderer Lizenz als der Rest der Standard-Lib, und diese Lizenz lässt sich nicht mit den Debian Free Software Guidelines als frei vereinbaren (das "python-profile"-Paket ist deshalb auch in der "non-free"-Sektion zu finden).

Ich weiß also wirklich nicht, wie man von "verbrochen" reden kann.

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 12:12
von BlackJack
@Trundle: Bei dem Grund weiss ich nicht wie man da *nicht* von "verbrochen" reden kann. Ich sehe keine technische Begründung diesen Teil der Standardbibliothek "rauszurupfen". Hätten sie halt Python komplett in "non-free" packen sollen, wenn ihnen das nicht passt. :twisted:

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 14:29
von noisefloor
Hallo,
Und das "was die Leute dazu getrieben hat" ist auch ganz einfach: Das "profile"- und das "pstats"-Modul stehen unter anderer Lizenz als der Rest der Standard-Lib,
Ah - jetzt verstehe ich auch, warum auf der Seite in der Python Doku zuerst so ein komischer Lizenztext auftaucht. :-)

Der Profiler (Paket: python-profiler) ist in der Tat bei Ubuntu in "multiverse". Nach der Installation funktioniert es auf jeden Fall.

Danke & gelöst. :-)

Gruß, noisefloor

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 16:21
von Leonidas
BlackJack hat geschrieben:@Trundle: Bei dem Grund weiss ich nicht wie man da *nicht* von "verbrochen" reden kann. Ich sehe keine technische Begründung diesen Teil der Standardbibliothek "rauszurupfen". Hätten sie halt Python komplett in "non-free" packen sollen, wenn ihnen das nicht passt. :twisted:
Es ist keine technische Begründung sondern eine rechtliche. Wenn Python komplett in non-free wäre, dann müssten alle paketierten Module in contrib rein und damit wäre Python im Basissystem so ziemlich undenkbar.

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 16:40
von BlackJack
@Leonidas: Das es keine technische Begründung ist, schrob ich ja selbst, es ist aber auch keine "rechtliche" sondern eine idiologische. Es wäre von Rechts wegen nicht verboten den Teil *nicht* von der Standardbibliothek zu separieren.

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 16:56
von Leonidas
Es wäre aber dennoch falsch, für alle die in Debian main DFSG-konforme Software erwarten. Das ist ja der Sinn von main: wenn ich den Regeln der DFSG zustimme dann kann ich mir sicher sein, dass dort nur solche Software drin ist, brauche also nicht jede Lizenz eigens zu prüfen. Mir wärs auch lieber wenn die Module unter Python-Lizenz wären, aber bisher ist das eben noch nicht der Fall. Insofern ist es auch rechtlich, denn Lizenzen müssen ja rechtlich gültig sein und wenn die profiler-Lizenz nicht DFSG-kompatibel ist, dann enthält sie wohl Passagen die nicht unbedingt als "frei" (im Sinne von Debian, der sich stark mit dem deckt was viele FOSS-Leute als "frei" ansehen) eingestuft werden können, im rechtlichen "Rahmenwerk". Ohne dieses wäre alles Public Domain und die DFSG natürlich völlig unnötig.

Re: cProfile und pstats

Verfasst: Donnerstag 13. Mai 2010, 17:13
von BlackJack
Es mag nachvollziehbar sein, bleibt aber trotzdem eine idiologische Entscheidung. Kein Gesetz schreibt vor wie die Regelungen für Debian `main` auszusehen haben, noch das Python da reingehören muss.

Re: cProfile und pstats

Verfasst: Freitag 14. Mai 2010, 13:30
von mkesper
@BlackJack: Wenn man unter Ideologie die Summe der Zielvorstellungen versteht, hast du Recht. Wenn der Begriff "Ideologie" bzw. "ideologische Begründung" jedoch als Diskriminierung gegenüber "technisch notwendig" gemeint ist, dann hast du aus meiner Sicht unrecht. Wen es stört, dass Debian hier im Interesse seiner Nutzer auf die Feinheiten achtet, der muss es ja nicht verwenden.