install_requires в setup.py в зависимости от установленной версии Python - PullRequest
8 голосов
/ 21 мая 2011

Мой setup.py выглядит примерно так:

from distutils.core import setup

setup(
    [...]
    install_requires=['gevent', 'ssl', 'configobj', 'simplejson', 'mechanize'],
    [...]
)

В Python 2.6 (или выше) установка модуля ssl завершается неудачно с:

ValueError: This extension should not be used with Python 2.6 or later (already built in), and has not been tested with Python 2.3.4 or earlier.

Существует ли стандартный способ определения зависимостей только для определенных версий Python? Конечно, я мог бы сделать это с if float(sys.version[:3]) < 2.6:, но, возможно, есть лучший способ сделать это.

1 Ответ

14 голосов
/ 21 мая 2011

Это просто список, так что где-то выше вы должны условно построить список. Обычно делается что-то вроде следующего.

import sys

if sys.version_info < (2 , 6):
    REQUIRES = ['gevent', 'ssl', 'configobj', 'simplejson', 'mechanize'],
else:
    REQUIRES = ['gevent', 'configobj', 'simplejson', 'mechanize'],

setup(
# [...]
    install_requires=REQUIRES,
# [...]
)
...