我正在尝试为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
的安装程序)
到目前为止,我提出的最佳解决方案是包含一个额外的(虚拟)扩展包,但这看起来很糟糕并且会产生一些额外的问题。
答案 0 :(得分:1)
这可以使用--target-version
参数来完成,例如
python setup.py bdist_msi --target-version=2.7
Distutils documentation在提到bdist_rpm
命令时提及此选项,但它也适用于bdist_msi
。