Python pkg_resources.get_distribution альтернатива

У меня есть очень медленный код, я проследил его до использования pkg_resources.get_distributionЯ делаю это:

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

Есть ли альтернативная библиотека / метод, который я могу использовать, который делает то же самое?

1 ответ

Это зависит от модуля, с которым вы работаете, большинство библиотек 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 Метод будет сильно изменяться по времени, в зависимости от того, сколько модулей у вас в вашей системе.

Результаты:

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

В моей системе __version__ был в 7,5 раз быстрее, чем pkg_resources

Другие вопросы по тегам