Estoy un poco confundido acerca de los casos en que los comandos anteriores deben usarse al descargar paquetes de Python. Intenté descargar un paquete llamado pyudev de acuerdo con una respuesta a esta pregunta . Ejecuté este comando:
sudo pip install python-pyudev
pero recibió el siguiente mensaje:
Downloading/unpacking python-pyudev
Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log
Sin embargo, lo siguiente funcionó bien:
sudo apt-get install python-pyudev
¿Cuándo se apt-getsupone que debe usarse para instalar paquetes y cuándo se python-pipusa?
apt
software-installation
python
pip
Vineet Kaushik
fuente
fuente

pipse usa solo para instalar paquetes de python, peroapt-getse usa para instalar todos los paquetes.Respuestas:
PyPI es el índice del paquete Python - repositorio de módulos python.
pipse usa para descargar e instalar paquetes directamente desde PyPI. PyPI es alojado por Python Software Foundation . Es un administrador de paquetes especializado que solo se ocupa de los paquetes de Python.apt-getse utiliza para descargar e instalar paquetes de repositorios de Ubuntu alojados por Canonical.Algunas de las diferencias entre instalar paquetes de Python
apt-getypipson las siguientes:Canonical solo proporciona paquetes para módulos python seleccionados. Mientras que, PyPI alberga una gama mucho más amplia de módulos de Python. Por lo tanto, hay muchos módulos de Python que no podrá instalar utilizando
apt-get.Canonical solo aloja una versión única de cualquier paquete (generalmente el último o el lanzado en el pasado reciente). Entonces, con
apt-getno podemos decidir la versión de python-package que queremos.pipnos ayuda en esta situación. Podemos instalar cualquier versión del paquete que se haya cargado previamente en PyPI. Esto es extremadamente útil en caso de conflicto en las dependencias.apt-getinstala módulos de python en una ubicación de todo el sistema. No podemos simplemente instalar módulos en nuestro proyecto virtualenv .pipresuelve este problema para nosotros. Si estamos usandopipdespués de activar virtualenv, es lo suficientemente inteligente como para instalar solo los módulos en nuestro proyecto virtualenv. Como se mencionó en el punto anterior, si ya hay una versión de un paquete de Python en particular instalada en todo el sistema, y uno de nuestros proyectos requiere una versión anterior del mismo paquete de Python, en tales situaciones podemos usar virtualenv y pip para instalar esa versión anterior del paquete python sin ningún conflicto.Como @Radu Rădeanu señaló en esta respuesta , generalmente también habría diferencias en los nombres de los paquetes. Canonical generalmente nombra los paquetes Python 2 como
python-<package_name>y los paquetes Python 3 comopython3-<package_name>. Mientras que, porpiplo general, solo necesitamos usar<package_name>tanto para Python 2 como para los paquetes Python3.Cual deberías utilizar:
Tanto
apt-getypipson los gestores de paquetes maduros que se instalan de forma automática cualquier otra dependencia de un paquete durante la instalación. Puedes usar a quien quieras. Sin embargo, si necesita instalar una versión particular de python-package, o instalar el paquete en un virtualenv, o instalar un paquete que solo está alojado en PyPI; solopipte ayudaría a resolver ese problema. De lo contrario, si no le importa instalar los paquetes en una ubicación de todo el sistema, realmente no importa si usaapt-geto nopip.fuente
pipy al mismo tiempoapt-get.apt-get. Debido a que el uso de ambosapt-getypippuede provocar conflictos, debe ser el consejo de usar siemprepippara los paquetes soportados porpip?sudo pipy sinvirtualenvporque la mayoría de sus proyectos necesitan el mismo entorno (pero más amplia que lo que está provisto con la instalación de Ubuntu limpio). Luego, cuando se realiza una actualización del sistema y Ubuntu decide actualizar Python a una nueva versión (como conzestyaartful- Python 3.5 a 3.6), todos los paquetes instalados en pip-/usrse quedan atrás ypip.get_installed_distributions()produce una lista vacía.Como @AvinashRaj dijo en su comentario , solo
pipse usa para instalar paquetes de Python, peroapt-getse usa para instalar paquetes creados en cualquier lenguaje de programación.Su principal problema es encontrar el nombre del paquete correcto en ambos casos:
le dará el nombre correcto para el paquete que desea instalar usando
pip install, comole dará el nombre correcto para el paquete que desea instalar usando
apt-get install:Entonces, en conclusión, el corresponsal de
sudo apt-get install python-pyudevessudo pip install pyudev, nosudo pip install python-pyudev.Ahora depende de usted lo que desea elegir cuando desea instalar un paquete de Python:
pipoapt-get. Consulte, por ejemplo, estas preguntas y respuestas sobre la diferencia en la instalación de un paquete usandopipyapt-get.fuente
Mi forma preferida es usar siempre
apty solo en caso de que el módulo aún no esté disponible en el repositorio de Debian / Ubuntu para usarpip, sino solo en el contexto del usuario:--userindicador. Al usarpipuno de todos modos, debe instalar todas las dependencias de compilación, digamos el repositorio de Ubuntu o proporcionarlas por sí mismas, lo que puede ser una tarea tediosa.apt-getinstale paquetes binarios mientras lospipconstruye después de la descarga. No se debe usar pip para instalar módulos en ubicaciones del sistema. Esto es simplemente incorrecto. Utilice siempre la--userbandera para instalar un módulo en la ubicación de inicio. PYTHONPATH configurado correctamente permite que Python recoja los módulos del INICIO primero y luego los módulos del sistema instalados conapt-get.fuente