使用预编译的扩展包生成依赖于Python版本的安装程序

使用预编译的扩展包生成依赖于Python版本的安装程序,python,installation,distutils,Python,Installation,Distutils,我正在尝试为Python包创建一个安装程序(使用distutils),该包包含一个预编译的扩展模块,该模块使用“package_data”关键字参数包含。My setup.py的外观如下所示: from distutils.core import setup setup(name="Foobar", ... packages = ['Foobar'], package_data = {'Foobar': '_foobar.pyd'}) 但是,使用python

我正在尝试为Python包创建一个安装程序(使用distutils),该包包含一个预编译的扩展模块,该模块使用“package_data”关键字参数包含。My 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
在引用
bdist_rpm
命令时提到此选项,但它也适用于
bdist_msi