Diferencia entre 'python setup.py install' y 'pip install'

105

Tengo un paquete externo que quiero instalar en mi python virtualenv desde un archivo tar. ¿Cuál es la mejor forma de instalar el paquete?

Descubrí 2 formas de hacerlo:

  1. Extraiga el archivo tar, luego ejecútelo python setup.py installdentro del directorio extraído.
  2. pip install packagename.tar.gzdel ejemplo 7 en https://pip.pypa.io/en/stable/reference/pip_install/#examples

Es si hay alguna diferencia haciéndolos de estas 2 formas.

usuario2125465
fuente
5
Utilice pip. Puede desinstalar paquetes con él.
Blender
"De origen" como en "Pago de VCS", o como en sdist?
¡Lo que es "mejor" depende de sus requisitos! ¿Ha probado alguna de estas soluciones y no les ha fallado de alguna manera? ¿O preguntando cuál es la diferencia es entre estos enfoques?
Martin Atkins
En fedora, por ejemplo, usando yum.
perreal

Respuestas:

109

En la superficie, ambos hacen lo mismo: hacer python setup.py installo pip install <PACKAGE-NAME>instalará su paquete de Python por usted, con un mínimo de esfuerzo.

Sin embargo, usar pip ofrece algunas ventajas adicionales que lo hacen mucho más agradable de usar.

  • pip descargará automáticamente todas las dependencias de un paquete. Por el contrario, si usa setup.py, a menudo tendrá que buscar y descargar dependencias manualmente, lo cual es tedioso y puede volverse frustrante.
  • pip realiza un seguimiento de varios metadatos que le permiten desinstalar y actualizar paquetes fácilmente con un solo comando: pip uninstall <PACKAGE-NAME>y pip install --upgrade <PACKAGE-NAME>. Por el contrario, si instala un paquete utilizando setup.py, debe eliminar manualmente y mantener un paquete a mano si desea deshacerse de él, lo que podría ser potencialmente propenso a errores.
  • Ya no tiene que descargar manualmente sus archivos. Si lo usa setup.py, debe visitar el sitio web de la biblioteca, averiguar dónde descargarlo, extraer el archivo, ejecutar setup.py... Por el contrario, pip buscará automáticamente el índice de paquetes de Python (PyPi) para ver si el paquete existe allí, y descargará, extraerá e instalará automáticamente el paquete. Con algunas excepciones, casi todas las bibliotecas de Python realmente útiles se pueden encontrar en PyPi.
  • pip te permitirá instalar ruedas fácilmente , que es el nuevo estándar de distribución de Python. Más información sobre ruedas .
  • pip ofrece beneficios adicionales que se integran bien con el uso virtualenv, que es un programa que le permite ejecutar múltiples proyectos que requieren bibliotecas en conflicto y versiones de Python en su computadora. Más info .
  • pip se incluye de forma predeterminada con Python a partir de Python 2.7.9 en la serie Python 2.x, y a partir de Python 3.4.0 en la serie Python 3.x, lo que lo hace aún más fácil de usar.

Básicamente, usa pip. Solo ofrece mejoras sobre el uso python setup.py install.


Si está utilizando una versión anterior de Python, no puede actualizar y no tiene pip instalado, puede encontrar más información sobre cómo instalar pip en los siguientes enlaces:

pip, por sí solo, no requiere un tutorial. El 90% del tiempo, el único comando que realmente necesita es pip install <PACKAGE-NAME>. Dicho esto, si está interesado en obtener más información sobre los detalles de lo que puede hacer exactamente con pip, consulte:

También se recomienda comúnmente que use pip y virtualenv juntos. Si eres un principiante en Python, personalmente creo que estaría bien comenzar con solo usar pip e instalar paquetes globalmente, pero eventualmente creo que deberías hacer la transición al uso de virtualenv mientras abordas proyectos más serios.

Si desea obtener más información sobre cómo usar pip y virtualenv juntos, consulte:

Michael0x2a
fuente
1
¿Pip install llama internamente al archivo setup.py?
variable
@variable, pip install from "wheels", paquetes precompilados, no, pip install from source sí: vea pip install build system interface
denis
En mi experiencia, python setup.py installtambién descarga e instala dependencias. ¿Es esto un cambio desde que escribió esta respuesta en 2013?
Ken Williams
19

python setup.py installes el análogo de make install: es una forma limitada de compilar y copiar archivos en directorios de destino. Esto no significa que sea la mejor manera de instalar software en su sistema.

pipes un administrador de paquetes, que puede instalar, actualizar, enumerar y desinstalar paquetes, como los administradores de paquetes familiares, que incluyen: dpkg, apt, yum, urpmi, portsetc. Bajo el capó, se ejecutará python setup.py install, pero con opciones específicas para controlar cómo y dónde terminan instaladas las cosas.

En resumen: use pip.

Éric Araujo
fuente
2

La pregunta es sobre el método preferido para instalar un tarball local que contenga un paquete de Python, NO sobre la ventaja de cargar el paquete en un servicio de indexación como PyPi.

Como no sé, algún distribuidor de software no carga su paquete en PyPi, sino que pide a los desarrolladores que descarguen el paquete de su sitio web e instalen.

instalación de python setup.py

Esto puede funcionar pero no se recomienda. No es necesario desenvolver el archivo tarball y entrar en él para ejecutar el archivo setup.py.

pip install ../path/to/packagename.tar.gz

Esta es la forma diseñada y preferida. Conciso y alineado con paquetes estilo PyPi.

pip installPuede encontrar más información aquí: https://pip.readthedocs.io/en/stable/reference/pip_install/

campo temático
fuente
¿Podemos usar pip install -e?
variable