一些 Python 包为程序提供了一种获取已安装版本的方法。例如
>>> import numpy
>>> numpy.version.version
'1.5.0'
但我找不到这样做的方法pywin32
。有什么好的方法可以查出来?
我发现了 Jean-Paul Calderone 的博客文章“在 Python 包中包含版本信息”,它表明您可以通过pywin32
这种方式获取版本:
>>> import win32api
>>> fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__, '\\')
>>> fixed_file_info['FileVersionLS'] >> 16
212
改编自 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 版本上不再适用于我。
这是我迄今为止想出的唯一方法。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
文件的版本是什么,以及将来继续安装的可能性有多大。