13

一些 Python 包为程序提供了一种获取已安装版本的方法。例如

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

但我找不到这样做的方法pywin32。有什么好的方法可以查出来?

4

3 回答 3

17

我发现了 Jean-Paul Calderone 的博客文章“在 Python 包中包含版本信息”,它表明您可以通过pywin32这种方式获取版本:

>>> import win32api
>>> fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__, '\\')
>>> fixed_file_info['FileVersionLS'] >> 16
212
于 2011-02-21T22:02:06.173 回答
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 版本上不再适用于我。

于 2012-02-28T10:31:18.613 回答
4

这是我迄今为止想出的唯一方法。pywin32.version.txt它会在 Python 安装目录中找到一个名为的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文件的版本是什么,以及将来继续安装的可能性有多大。

于 2010-11-04T01:00:48.320 回答