Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pkg_resources.get_发行版备选方案_Python_Pkg Resources - Fatal编程技术网

Python pkg_resources.get_发行版备选方案

Python pkg_resources.get_发行版备选方案,python,pkg-resources,Python,Pkg Resources,我有一些非常慢的代码,我将其追溯到使用pkg\u资源。获取\u发行版,我正在这样做: # ... pkg_resources.get_distribution(module_name).version 是否有其他库/方法可用于执行相同的操作?这取决于您使用的模块,大多数python库都实现了\uuuuu version\uuuu属性,请尝试: 我的时间安排也表明这是最好的。我尝试了三种不同的方法: import time import pip import pkg_resources from

我有一些非常慢的代码,我将其追溯到使用
pkg\u资源。获取\u发行版
,我正在这样做:

# ...
pkg_resources.get_distribution(module_name).version

是否有其他库/方法可用于执行相同的操作?

这取决于您使用的模块,大多数python库都实现了
\uuuuu version\uuuu
属性,请尝试:

我的时间安排也表明这是最好的。我尝试了三种不同的方法:

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__ = 9.0.1 in 2.1457672119140625e-06
pip freeze = 9.0.1 in 0.04388904571533203
pkg_resources = 9.0.1 in 0.0016148090362548828

在我的系统上,
\uu版本
pkg\u资源
快7.5倍。这取决于您使用的模块,大多数python库实现了
\uu版本
属性,请尝试:

我的时间安排也表明这是最好的。我尝试了三种不同的方法:

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__ = 9.0.1 in 2.1457672119140625e-06
pip freeze = 9.0.1 in 0.04388904571533203
pkg_resources = 9.0.1 in 0.0016148090362548828

在我的系统上,
\uu版本
pkg\u资源快7.5倍

我想我不太明白的是
pkg\u资源到底在做什么?它是在看除
模块以外的其他东西吗?不,它不是,请看这里:@KX68C4qxM51mtdzex7O8iMPU,如果它对您有帮助,您应该接受一个答案。谢谢,但我不确定使用
模块是不是可以100%地替代我的代码,由于我只有一个模块名列表作为字符串,它们可能没有被导入,我想我不太明白的是
pkg\u资源。get\u发行版实际上在做什么?它是在看除
模块以外的其他东西吗?不,它不是,请看这里:@KX68C4qxM51mtdzex7O8iMPU,如果它对您有帮助,您应该接受一个答案。谢谢,但我不确定使用
模块是不是可以100%地替代我的代码,因为我只有一个模块名列表作为字符串,它们可能没有被导入