以编程方式查找已安装的pywin32版本

时间:2010-11-04 00:57:26

标签: python version pywin32

某些Python包为程序提供了获取已安装版本的方法。 E.g。

>>> import numpy
>>> numpy.version.version
'1.5.0'

但我无法找到pywin32的方法。有什么好办法可以找到?

3 个答案:

答案 0 :(得分:15)

我找到了一篇博文"Include version information in your Python packages" by Jean-Paul Calderone,其中显示您可以通过这种方式获得pywin32的版本:

>>> import win32api
>>> fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__, '\\')
>>> fixed_file_info['FileVersionLS'] >> 16
212

答案 1 :(得分:7)

改编自Mark的官方回复: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版本中不再适用于我。

答案 2 :(得分:3)

这是我到目前为止唯一的解决方法。它在Python安装的pywin32.version.txt目录中找到一个名为site-packages的文件,并读取内容。

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个{{1}}个版本的版本,以及将来有多大可能继续存在。