easy_install / pip o apt-get

30

Como se señaló en la página wiki de Ubuntu en Rails , se recomienda que gems administre sus dependencias Rails / Ruby.

¿Cuál es la mejor práctica con paquetes de Python como Django? ¿Debo instalarlos a través de apt-get o debo permitir que easy_install / pip los obtenga de PyPi?

Leonard Ehrenfried
fuente

Respuestas:

29

Hay varios argumentos:

  1. Utilice los repositorios / PPA porque lo mantendrán estable y actualizado con las correcciones de seguridad.

    Esto es mayormente cierto. Si, por ejemplo, instala python-djangocomo yo, obtendrá actualizaciones de seguridad. Esto es bueno porque solo tiene que estar al tanto de apt, pero aún debe probar las cosas antes de enviar actualizaciones (aunque las pruebas deberían estar bien cada vez).

    Podrías argumentar que si lo usas pip, nunca podrías buscar actualizaciones.

  2. Use pippara poder usar las versiones "estables" adecuadas.

    No hay duda al respecto: los repos rezagados detrás del mundo real. Django es 2.0, pero los repositorios para la versión LTS de Ubuntu (que mucha gente usa para servidores) solo obtienes 1.8 en Ubuntu 16.4 lts con Python 2, pero aún obtienes actualizaciones de seguridad.

    pipte da lo último todo el tiempo. Solo tienes que actualizarlos tú mismo.

  3. Actualizar una instalación de Python reutilizada puede ser una pesadilla

    Cuando usted actualiza Ubuntu a la próxima versión, actualiza muchos paquetes. Muchas cosas cambian. Sé que en Django esto significa que debes tener cuidado de estar atento a las incompatibilidades de código, desaprobaciones ... Pero lo mismo se aplica a todos los demás códigos de Python.

    Lo mismo es cierto para pippero con pipusted puede hacer una cosa a la vez. Sabes qué causa los problemas, así que sabes dónde buscar para encontrar la solución.

  4. pip+ virtualenvte permite mantener las cosas separadas

    virtualenvle permite tener pequeños entornos portátiles de Python. Esto le permite tener varios entornos Python diferentes ejecutándose uno al lado del otro en la misma máquina.

    La bendición obvia parece ser para el mantenimiento, ya que puede administrar el entorno de la misma manera que administra el código. Incluso almacene el entorno en el VCS también ... pero debe recordar que tener doce virtualenvs diferentes significa doce entornos que debe verificar y actualizar.


Editar: Después de una horrible serie de actualizaciones en un servidor para obtenerlo de Lucid a Precise, he cambiado de una situación mixta Apt + pip (nr 1 y 2) a una situación pura pip + virtualenv (nr. 4). En lugar de tener un virtualenv por sitio, tengo uno compartido entre una docena de sitios. Esto está funcionando por ahora.

También tuve que escribir un pequeño script que verifica el estado de los paquetes instalados con pip. Si hay actualizaciones, tengo que aplicarlas manualmente (lo cual es bueno porque las pruebo localmente, en un local virtualenv). Todo esto es aún un poco más doloroso de lo que era originalmente, pero a la larga es mucho mejor.

Oli
fuente
10
  • Paquetes de los repositorios

    Deben instalarse siempre que su aplicación sea de alguna manera específica para Ubuntu . Le garantizan una versión estable que puede instalar en todas las máquinas Ubuntu, son compatibles y, a veces, más maduras que la que obtiene a través de pip. Si implementa un montón de servidores ubuntu, o si está escribiendo aplicaciones de Ubuntu, utilícelas, si están disponibles .

    También a veces contienen modificaciones específicas de Ubuntu.

  • pip vs instalación fácil

    No hay mucho que decir sobre eso, como lo expresó el pirata informático de Django James Bennett:

    Por amor de Guido, deje de usar setuptools y easy_install, y use distutils y pip en su lugar.

    Para una discusión en profundidad sobre las diferencias, vea Sobre el empaquetado de James Bennett (de django) y Algunas correcciones a “Sobre el empaquetado” de Ian Bicking (de mozilla).

Si desea estar seguro, pruebe sus implementaciones de pip utilizando virtualenv . Esto le brinda un entorno de Python aislado, por lo que puede estar seguro de que su aplicación se ejecutará en cualquier máquina.

Sin embargo, espera un poco, confío en que algunas personas no estarán de acuerdo conmigo.

Stefano Palazzo
fuente