2011-05-21 12 views
6

Mi setup.py se ve algo como esto:install_requires en setup.py dependiendo de la versión de Python instalado

from distutils.core import setup 

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

En Python 2.6 (o superior) de la instalación del módulo SSL falla con:

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. 

¿Existe una manera estándar de definir dependencias solo para versiones específicas de Python? Por supuesto que podría hacerlo con if float(sys.version[:3]) < 2.6:, pero tal vez hay una mejor manera de hacerlo.

+0

no puedo encontrar install_requires como un argumento para distutils.core.setup que parece sobrante de setuptools. http://docs.python.org/2/distutils/apiref.html#distutils.core.setup – jrwren

Respuesta

12

Es solo una lista, por lo tanto, en algún lugar arriba tienes que construir una lista de manera condicional. Algo parecido a lo siguiente se hace comúnmente.

import sys 

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

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

Ahora hay una forma mejor, descrita en [esta respuesta] (https://stackoverflow.com/a/32643122/ 3565696) – ederag

Cuestiones relacionadas