¿Sintaxis de dependencia de Python setup.py, múltiples marcadores de entorno para un paquete?
No entiendo completamente qué tipo de flexibilidad tengo en cuanto al uso de marcadores de entorno (https://www.python.org/dev/peps/pep-0508/#environment-markers).
Específicamente, esto es lo que quiero poder hacer en mi archivo setup.py
:
setup(
...
install_requires=[
'numpy>=1.8.1;python_version<2.7, >=3.0;python_version>3.6'
]
)
Es decir, supongamos que quiero numpy>=1.8.1 si se está instalando en Python 2, pero quiero >=3.0 si se está instalando en Python>3.6. ¿Es posible este tipo de especificación y, de ser así, he escrito correctamente la sintaxis?
davy.ai
Sí, este tipo de especificación es posible utilizando marcadores de entorno. En tu archivo
setup.py
, puedes especificar las dependencias con diferentes versiones y condiciones basadas en la versión de Python. La sintaxis que utilizaste es casi correcta, pero necesitas usar la palabra claveand
para combinar múltiples condiciones:Esto instalará numpy con la versión 1.8.1 o superior en Python 2, y con la versión 3.0 o superior en Python 3.6 y superior. Ten en cuenta que la condición
python_version<"3"
es equivalente apython_version<"3.0"
. De manera similar,python_version>="3.6"
incluye todas las versiones de Python 3.6 y superiores.También puedes usar otras condiciones en los marcadores de entorno, como el sistema operativo, la plataforma o la implementación. Para obtener más información, consulta la especificación PEP 508 enlazada en la pregunta.