python setuptools requirements

python - Requisitos de "desarrollo" de Setuptools



requirements (1)

Para obtener más información sobre el uso de setup.py vs setup.py , este artículo me resultó útil.

Actualización: septiembre 2016

Ya no utilizo requirements.txt (vea la respuesta original a continuación) para instalar paquetes de solo desarrollo. La opinión predominante parece ser que requirements.txt debe usar para fijar implementaciones a números de versión específicos, generalmente utilizando pip freeze > requirements.txt . Esto garantiza que las mismas versiones exactas de las dependencias de su proyecto y también las dependencias de sus proyectos estén instaladas en todos sus servidores.

En su lugar, uso la opción extras_require para la setup .

requirements = [ ''click'', ''ansible'', ''fabric'', ''gitpython'', ''pyyaml'', ''jinja2'', ''yapsy'' ] setup({ install_requires=requirements, extras_require={ ''dev'': [ ''pytest'', ''pytest-pep8'', ''pytest-cov'' ] } })

Ahora, para instalar su paquete para el desarrollo, ejecute pip install -e .[dev] . Esto instala todos los paquetes requeridos regulares y los que se enumeran en la sección de extras_require de extras_require .

Las instalaciones de producción aún se pueden realizar con python setup.py install o pip install . (o con un archivo Requirements.txt).

Respuesta original

Aquí hay una manera de hacerlo que parece estar en consonancia con las recomendaciones que he encontrado con respecto a setup.py vs setup.py . Especifique todas sus dependencias de producción en el parámetro install_requires de setup.py .

requirements = [ ''click'', ''ansible'', ''fabric'', ''gitpython'', ''pyyaml'', ''jinja2'', ''yapsy'' ] setup({ # ... install_requires=requirements # ... })

Luego, cree un archivo setup.py que setup.py a pip que instale sus dependencias de producción desde setup.py así como sus dependencias de prueba.

-e . pytest pytest-pep8 pytest-cov

Ahora puede instalar su paquete para el desarrollo con pip install -r requirements.txt . El -e . line instalará su paquete y sus dependencias desde setup.py en modo de desarrollo. Para instalar en producción, puede usar python setup.py install o pip install . . Esto solo instalará las dependencias enumeradas en setup.py .

TL; DR : ¿Hay alguna forma de enganchar el ''desarrollo'' de setuptool para instalar un conjunto de requisitos de desarrollo al ejecutar python setup.py develop ?

Estoy construyendo mi primer paquete de Python usando setuptools. Estoy especificando los requisitos como:

requirements = [ ''click'', ''ansible'', ''fabric'', ''gitpython'', ''pyyaml'', ''jinja2'', ''yapsy'' ] test_requirements = [ ''pytest'', ''pytest-pep8'', ''pytest-cov'', ] setup( ... install_requires=requirements, tests_require=test_requirements, ... )

Durante el desarrollo, he estado instalando el paquete (en un entorno virtual) con:

python setup.py develop

y desinstalación con:

python setup.py develop -u

El paquete usa entry_points para instalar algunos scripts de línea de comandos, por lo que esto configura los comandos para mí y me permite editar el paquete mientras se prueba el comando al mismo tiempo.

También tengo algunas dependencias que utilizo para el desarrollo ... extensiones sphinx + y un par de cosas más (cosas que no son necesarias para usar el paquete). Estoy instalando manualmente en el entorno virtual en este momento. No vi ninguna documentación (y no he encontrado ningún ejemplo sobre los googles) sobre cómo conectarlos con setuptools.

Tal vez hay una manera de enganchar ''setup.py develop'' para instalar un conjunto adicional de requisitos? ¿Otro método sobre el que no he leído?