、ほとんどのPythonライブラリは__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
方法は、あなたのシステムを持っているどのように多くのモジュールに応じて、タイミングが非常に多様になることに留意してください:私は3つの異なる方法で試してみました。
結果:私のシステム__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
私はかなり理解していないものを推測7.5倍高速pkg_resources
よりだった '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