2017-03-15 3 views

Antwort

0

Es auf dem Modul hängt mit dem Sie arbeiten, die meisten Python-Bibliotheken implementieren die __version__ Attribut, versuchen Sie das:

Meine Timings deuten darauf hin, es auch das Beste ist. Ich habe versucht, mit drei verschiedenen Methoden:

import time 
import pip 
import pkg_resources 
from pip.operations import freeze 


# __version__ 
t0 = time.time() 
version_number = pip.__version__ 
t1 = time.time() 

total = t1-t0 
print("__version__ =", version_number, "in", total) 

# pip freeze 
t0 = time.time() 
x = freeze.freeze() 

for p in x: 
    if p[:p.find('==')] == "pip": 
     version_number = p[p.find('==')+2:] 
     break 
t1 = time.time() 

total = t1-t0 
print("pip freeze =", version_number, "in", total) 

# pkg_resources 
t0 = time.time() 
version_number = pkg_resources.get_distribution("pip").version 
t1 = time.time() 

total = t1-t0 
print("pkg_resources =", version_number, "in", total) 

Denken Sie daran, dass die pip freeze Verfahren sehr variabel in Timing sein, je nachdem, wie viele Module, die Sie in Ihrem System haben.

Ergebnisse:

__version__ = 9.0.1 in 2.1457672119140625e-06 
pip freeze = 9.0.1 in 0.04388904571533203 
pkg_resources = 9.0.1 in 0.0016148090362548828 

Auf meinem System __version__ 7,5-mal schneller als pkg_resources

war
+0

Ich denke, was ich nicht ganz verstehe ist, was 'pkg_resources.get_distribution' tatsächlich tut? Betrachtet es etwas anderes als 'modul .__ version__'? – KX68C4qxM51mtdzex7O8iMPU

+0

Nein, nicht, schauen Sie hier: [pkg_resources.py] (http://svn.python.org/projects/sandbox/branches/setuptools-0.6/pkg_resources.py) – Morgoth

+0

@ KX68C4qxM51mtdzex7O8iMPU, sollten Sie akzeptieren eine Antwort, wenn es dir hilft. – Morgoth