Hay varios argumentos:
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.
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.
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.
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.