Программно найти установленную версию pywin32
Некоторые пакеты Python предоставляют возможность для программы получить установленную версию. Например.
>>> import numpy
>>> numpy.version.version
'1.5.0'
Но я не могу найти способ сделать это для pywin32
. Какой может быть хороший способ найти?
Ответы
Ответ 1
Я нашел сообщение в блоге "Включить информацию о версии в ваши пакеты Python" Жан-Поля Кальдерона, в котором показано, что вы можете получить версию pywin32
следующим образом:
>>> import win32api
>>> fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__, '\\')
>>> fixed_file_info['FileVersionLS'] >> 16
212
Ответ 2
Адаптировано из официального ответа Марка на: http://mail.python.org/pipermail/python-win32/2010-April/010404.html
import os
import distutils.sysconfig
pth = distutils.sysconfig.get_python_lib(plat_specific=1)
ver = open(os.path.join(pth, "pywin32.version.txt")).read().strip()
поскольку ответ Craig больше не работал у меня в сборке amd64.
Ответ 3
Это единственный способ, который я догадался до сих пор. Он находит файл с именем pywin32.version.txt
в каталоге установки site-packages
Python и читает содержимое.
def get_pywin32_version():
for path in sys.path:
if os.path.isdir(path):
filename = os.path.join(path, 'pywin32.version.txt')
if os.path.isfile(filename):
with open(filename) as f:
pywin32_version = f.read()
pywin32_version = pywin32_version.strip()
return pywin32_version
Это далеко не официальный API! Я не знаю, какие версии pywin32
установили этот файл pywin32.version.txt
, и насколько вероятно, что это будет продолжаться в будущем.