我正在尝试为包含预编译扩展模块的 Python 包创建安装程序(使用 distutils),该扩展模块使用“package_data”关键字参数包含在内。我的 setup.py 看起来像这样:
from distutils.core import setup
setup(name="Foobar",
...
packages = ['Foobar'],
package_data = {'Foobar': '_foobar.pyd'})
但是,使用 python setup.py bdist_msi 构建此包会生成一个安装程序,该安装程序将为任何版本的 Python 安装(名为 Foobar-1.0.win-amd64.msi ),即使扩展模块只与编译它的 Python 版本兼容。
有什么方法可以告诉 distutils 创建一个需要兼容 Python 版本的安装程序,类似于使用 distutils 编译扩展模块时生成的安装程序(生成一个名为 Foobar-1.0.win-amd64 的安装程序-py2.7.msi)
到目前为止,我想出的最好的解决方案是包含一个额外的(虚拟的)扩展包,但这似乎有些笨拙并且会产生一些额外的问题。
请您参考如下方法:
这可以使用 --target-version 参数来完成,例如
python setup.py bdist_msi --target-version=2.7
Distutils documentation在引用 bdist_rpm 命令时提到了此选项,但它也适用于 bdist_msi。
