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

13 投票
3 回答
9917 浏览
提问于 2025-04-16 06:31

有些Python的包提供了一种方法,让程序可以获取已安装的版本。例如:

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

但是我找不到一种方法来查看pywin32的版本。有没有什么好的办法可以找到这个信息呢?

3 个回答

4

这是我目前找到的唯一方法。它会在Python安装的site-packages目录中查找一个叫做pywin32.version.txt的文件,并读取里面的内容。

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

不过,这远不是一个官方的接口!我不知道哪些版本的pywin32会安装这个pywin32.version.txt文件,也不知道将来这种情况有多大可能继续存在。

8

这段内容是根据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版本上已经不管用了。

19

我找到了一篇博客文章,标题是“在你的Python包中包含版本信息”,作者是Jean-Paul Calderone。文章里介绍了一种方法,可以这样获取pywin32的版本:

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

撰写回答