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-get
supone que debe usarse para instalar paquetes y cuándo se python-pip
usa?
apt
software-installation
python
pip
Vineet Kaushik
fuente
fuente
pip
se usa solo para instalar paquetes de python, peroapt-get
se usa para instalar todos los paquetes.Respuestas:
PyPI es el índice del paquete Python - repositorio de módulos python.
pip
se 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-get
se utiliza para descargar e instalar paquetes de repositorios de Ubuntu alojados por Canonical.Algunas de las diferencias entre instalar paquetes de Python
apt-get
ypip
son 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-get
no podemos decidir la versión de python-package que queremos.pip
nos 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-get
instala módulos de python en una ubicación de todo el sistema. No podemos simplemente instalar módulos en nuestro proyecto virtualenv .pip
resuelve este problema para nosotros. Si estamos usandopip
despué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, porpip
lo general, solo necesitamos usar<package_name>
tanto para Python 2 como para los paquetes Python3.Cual deberías utilizar:
Tanto
apt-get
ypip
son 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; solopip
te 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-get
o nopip
.fuente
pip
y al mismo tiempoapt-get
.apt-get
. Debido a que el uso de ambosapt-get
ypip
puede provocar conflictos, debe ser el consejo de usar siemprepip
para los paquetes soportados porpip
?sudo pip
y sinvirtualenv
porque 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 conzesty
aartful
- Python 3.5 a 3.6), todos los paquetes instalados en pip-/usr
se quedan atrás ypip.get_installed_distributions()
produce una lista vacía.Como @AvinashRaj dijo en su comentario , solo
pip
se usa para instalar paquetes de Python, peroapt-get
se 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-pyudev
essudo pip install pyudev
, nosudo pip install python-pyudev
.Ahora depende de usted lo que desea elegir cuando desea instalar un paquete de Python:
pip
oapt-get
. Consulte, por ejemplo, estas preguntas y respuestas sobre la diferencia en la instalación de un paquete usandopip
yapt-get
.fuente
Mi forma preferida es usar siempre
apt
y 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:--user
indicador. Al usarpip
uno 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-get
instale paquetes binarios mientras lospip
construye 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--user
bandera 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