Создание установщика, зависящего от версии Python, с предварительно скомпилированным пакетом расширения

Я пытаюсь создать установщик (используя distutils) для пакета Python, который включает предварительно скомпилированный модуль расширения, который включается с использованием аргумента ключевого слова «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)

На данный момент лучшее решение, которое я придумал, — это включить дополнительный (фиктивный) пакет расширений, но это кажется неуклюжим и создает некоторые дополнительные проблемы.


person Ray    schedule 04.01.2012    source источник


Ответы (1)


Это можно сделать с помощью аргумента --target-version, например.

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

В документации Distutils эта опция упоминается в связи с командой bdist_rpm, но она также работает. для bdist_msi.

person Ray    schedule 24.06.2013