Usando pip vs. MacPorts para instalar paquetes de Python

12

Podría instalar un paquete python ( por ejemplo , numpy) en mi Mac, ya sea a través de MacPorts:

port install py-numpy

o vía pip:

pip install numpy

¿Cuáles son las ventajas y desventajas generales de cada enfoque? ¿Cuándo se debe usar cada enfoque?

  • ¿Cuándo debería preferir uno sobre el otro?
  • ¿Importa si el paquete que estoy instalando es pequeño o grande (por ejemplo numpy)?
  • ¿Depende de la versión de Python que estoy usando ( 2.xvs. 3.x, o Apple pythonvs. MacPort's python)?
  • ¿Importa si tengo varias versiones de pythoninstaladas en mi Mac?
  • ¿Se pueden usar al mismo tiempo?

Espero una respuesta que tenga una breve lista de algunos pros / contras de cada enfoque con una discusión sobre cuándo elegir uno sobre el otro.

jvriesem
fuente
Relacionado, pero demasiado específico: stackoverflow.com/questions/16895282/… . Estoy pidiendo paquetes generales de Python en lugar de solo matplotlib.
jvriesem
AFAIK estos ya están instalados: puede verificar en la terminal:> python y el siguiente comando> importar numpy como np y si no hay errores, entonces lo tiene. La solución alternativa es usar anaconda de continuum.io/downloads : tiene muchas características y otras instalaciones con pip irán a su carpeta anaconda.
Yoan
@Yoan: numpyes solo un ejemplo. Estoy preguntando sobre la instalación de paquetes en general.
jvriesem

Respuestas:

3

Se pueden usar al mismo tiempo, y no debería haber ningún problema entre mezclar los dos (con una advertencia algo grande y un truco ...)

La advertencia

La advertencia es que macports / homebrew y pip no tendrán conocimiento de que cada uno se ha instalado frente al otro.

Entonces, por ejemplo, supongamos que instala Python 3.6 en su Mac. Usted quiere nltk, que técnicamente no está disponible para esa versión en Macports, pero está en pip. Entonces lo instalas en pip. Dos meses después, ves que está instalado en Macports y eliges instalarlo. Ahora tiene dos versiones diferentes de nltken su máquina, así que tenga cuidado .

El gotcha

Si usa pip con Macports, debe asegurarse de que sea el pip que esté instalado a través de Macports y asociado con esa versión de Python. Entonces, por ejemplo, verá un py35-pip, py36-pip, etc.

Una vez que instale el pip adecuado, use el selectcomando de Macports para asegurarse de que esté activado con la versión adecuada de python:

sudo port select
Rob M.
fuente
Mi experiencia es que instalar módulos en el área global de Python creado por MacPorts causa conflictos. Tarde o temprano, MacPorts intentará instalar un puerto que ya ha instalado con pip. Emitirá un mensaje de error acerca de un archivo en ese puerto que está presente pero no instalado por MacPorts. Creo que la respuesta de @ IanC es mejor: instalar en el área global de Python usando solo MacPorts, instalar dentro de entornos virtuales usando solo pip.
Jim DeLaHunt
4

Debe usarlo pipporque es la herramienta nativa de Python para administrar las instalaciones de paquetes, pero no debe instalar pip-cosas en su instalación base de Python. Puede ser un desastre tener que resolver las dependencias de versiones fijas entre múltiples repositorios de software si está instalando pip todo en su instalación base de Python en su máquina.

En su lugar, debe instalar virtualenv por pip y luego usarlo para administrar diferentes instalaciones virtuales de Python y todos los paquetes de paquetes instalados por pip asociados para cada entorno virtual.

Esto le permite pasar de trabajar con, digamos, beautifulsoup1.x en un repositorio de software a beautifulsoup2.x en otro repositorio sin tener que pasar por el infierno de administración de dependencias.

Ian C.
fuente
0

Acabo de hacer una prueba rápida buscando el mismo paquete usando Homebrew , MacPorts y pip3 :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts y pip3 tenían el mismo paquete (versión 1.18.1 ), mientras que Homebrew tenía la versión 1.16 .

Al colaborar con otros, es mejor ponerse de acuerdo sobre cómo se configuran sus entornos de desarrollo o comenzará a toparse con anomalías y obtener diferentes resultados de prueba. Por lo tanto, la mejor herramienta es la que todos están de acuerdo ;-)

F1Linux
fuente