2011-05-02 26 views
5

Estoy pensando en una buena forma de enviar mi aplicación, que es un paquete de Python. Instalar mi paquete es fácil haciendo uso del paquete de pitthons distutils.¿Práctica recomendada para instalar dependencias?

El problema viene con las dependencias de las que depende mi paquete. Si las dependencias son paquetes de Python, puedo lidiar con ellos fácilmente otra vez usando distutils, ¿pero paquetes que no son de Python? Algunos de ellos incluso necesitan mucho cuidado al compilarlos e instalarlos, ya que se deben configurar indicadores de compilador muy especiales y así sucesivamente ...

Si quiero automatizar el procedimiento de instalación para el usuario, ¿cuál es la mejor manera de ir sobre eso?

  1. Escribir un archivo de maquillaje que descarga e instala las dependencias
  2. escribir un script que instala las dependencias
  3. Sin automatización es mejor. simplemente escriba un manual que le indique al usuario cómo instalar las dependencias
  4. ???

Thx de antemano por cualquier respuesta o sugerencia

Respuesta

4

Lo más importante para ayudarle a decidir es considerar su público.

¿Están inclinados técnicamente y es probable que se sientan cómodos siguiendo las instrucciones que especifican cómo construir las dependencias por sí mismos? Si es así, ve con (3). Si no, escribir un script de python o shell, o un archivo MAKE para automatizar la tarea puede ser el camino a seguir. Elige lo que te sientas más cómodo escribiendo.

4

Tenemos un proyecto llamado Kivy (http://kivy.org/), que tiene exactamente el mismo problema. En la etapa inicial, hemos hecho un paquete todo en uno que incluye todas las configuraciones de todas las dependencias. Sin embargo, el usuario tenía un montón de botón "Siguiente>" para hacer clic ... para cada deps (Windows). Entonces, ahora, hemos logrado cuidarnos de las dependencias.

Excepto relacionado con Linux (ya que todos nuestros productos ya están empaquetados en "linux"), hemos adoptado el enfoque de administrar lo que denominamos zip-flip "portable-deps" para cada plataforma. Y entonces, tenemos un guión que:

  1. Descargar las portátiles-deps cremallera
  2. incluyen la última versión de nuestro proyecto
  3. Añadir guión lanzador en el directorio raíz
  4. Zip el directorio raíz, y cambiar el nombre de la cremallera a project--.zip

con un caso especial para MacOSX, donde la cremallera es un dmg con un poco de interfaz de usuario.

La parte buena es que el usuario no tiene que preocuparse por deps, y los desarrolladores saber exactamente lo que los binarios se entregan con el proyecto :)

Para obtener información, que tienen órdenes de build_portable distutils:

Cuestiones relacionadas