Construir una rueda / huevo y todas las dependencias para un proyecto python


Para poner en marcha el proyecto python dentro de nuestra corporación necesito hacer una distribución instalable.

Esto debería incluir:

  • Un huevo o whl para mi proyecto
  • Un huevo o whl para cada dependencia del proyecto
  • (opcionalmente) produce un requisito.archivo txt que lista todos los componentes instalables para esta versión

¿ Hay un plug in fácil, (por ejemplo, una alternativa a bdist_wheel) que no solo compilará una rueda, sino que también ¿componentes del proyecto?

Obviamente puedo escribir esto, pero esperaba que pudiera haber un atajo que construya el paquete + dependencias en menos pasos.

Esto necesita funcionar en Python 2.7 en Windows + Linux.

Author: Martijn Pieters, 2014-09-26

2 answers

Necesitará crear un archivo setup.py para su paquete. Asegúrese de que tiene instalado el último setuptools y pip. A continuación, ejecute lo siguiente:

python setup.py bdist_wheel

Esto creará un archivo wheel para su paquete. Esto supone que no tiene encabezados de C / C++, DLL, etc. Si lo haces, entonces probablemente tendrás mucho más trabajo por hacer.

Para obtener dependencias, deberá crear un archivo requirements.txt y ejecutar lo siguiente:

pip wheel -r requirements.txt

Si su paquete no está en PyPI, entonces tendrá que hacerlo manualmente copie el archivo wheel de su paquete en la carpeta wheel que este comando crea. Para más información ver el siguiente excelente artículo:

 31
Author: Mike Driscoll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-26 19:28:39

Con las últimas pip y wheel, simplemente puede ejecutar

pip wheel .

Dentro de su carpeta de proyecto, incluso si su aplicación no está en PyPI. Todas las ruedas se almacenarán en ./wheelhouse. Cuando lo probé, sin embargo, se perdió una de mis dependencias y necesitaba construirlo manualmente. No sé por qué.

 24
Author: jtpereyda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-07 18:52:38