es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for 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 clave and para combinar múltiples condiciones:

    setup(
        ...
        install_requires=[
            'numpy>=1.8.1;python_version<"3"',
            'numpy>=3.0;python_version>="3.6"',
        ]
    )
    

    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 a python_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.

Comments are closed.