는 대부분의 파이썬 라이브러리가 __version__
속성을 구현하는 시도 :
내 타이밍이 또한 최고 좋습니다. 나는 세 가지 방법으로 시도 :
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)
가 pip freeze
방법은 당신이 시스템에 얼마나 많은 모듈에 따라 타이밍이 높은 변수가 될 것 명심하십시오.
결과 : 내 시스템 __version__
에
__version__ = 9.0.1 in 2.1457672119140625e-06
pip freeze = 9.0.1 in 0.04388904571533203
pkg_resources = 9.0.1 in 0.0016148090362548828
이
pkg_resources
보다 7.5 배 빠른 속도였다 나는 내가 확실히 이해하지 못하는 것은 pkg_resources.get_distribution'이 실제로 무엇을하고 있는지 '추측? 'module .__ version__' 이외의 것을보고 있습니까? – KX68C4qxM51mtdzex7O8iMPU아니요, 여기를 살펴보십시오. [pkg_resources.py] (http://svn.python.org/projects/sandbox/branches/setuptools-0.6/pkg_resources.py) – Morgoth
@ KX68C4qxM51mtdzex7O8iMPU, 동의해야합니다. 그것이 당신을 돕는다면 대답. – Morgoth