使用预编译的扩展包生成与Python版本相关的安装程序

时间:2012-01-04 19:05:06

标签: python installer distutils

我正在尝试为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的安装程序)

到目前为止,我提出的最佳解决方案是包含一个额外的(虚拟)扩展包,但这看起来很糟糕并且会产生一些额外的问题。

1 个答案:

答案 0 :(得分:1)

这可以使用--target-version参数来完成,例如

python setup.py bdist_msi --target-version=2.7

Distutils documentation在提到bdist_rpm命令时提及此选项,但它也适用于bdist_msi