Uso de pip frente a MacPorts para instalar paquetes de Python

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

port install py-numpy

o a través de pip:

pip install numpy

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

  • ¿Cuándo debo 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's 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 alguna discusión sobre cuándo elegir uno sobre el otro.

Relacionado, pero demasiado específico: stackoverflow.com/questions/16895282/… . Estoy pidiendo paquetes generales de python en lugar de solo matplotlib.
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 funciones y otras instalaciones con pip irán a su carpeta anaconda.
@Yoan: numpyes solo un ejemplo. Estoy preguntando sobre la instalación de paquetes en general.

Respuestas (4)

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

la advertencia

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

Entonces, por ejemplo, digamos que instala Python 3.6 en su Mac. You want nltk, que técnicamente no está disponible para esa versión en Macports, pero está en pip. Así que instalas en pip. Dos meses después, ve que está instalado en Macports y elige 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
Mi experiencia es que instalar módulos en el área global de Python creada por MacPorts genera conflictos. Tarde o temprano, MacPorts intentará instalar un puerto que ya hayas instalado por pip. Emitirá un mensaje de error sobre un archivo en ese puerto presente pero no instalado por MacPorts. Creo que la respuesta de @IanC es mejor: instale en el área global de Python usando solo MacPorts, instale dentro de entornos virtuales usando solo pip.

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

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

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

Usé la distribución Anaconda de Python y hace que los entornos virtuales sean muy sencillos. Esto usa conda como se mencionó anteriormente.

En general, use un administrador de paquetes a la vez.

Tenga en cuenta que las cosas cambiaron la última vez que realmente miré las configuraciones fue hace 3 años, no creo que haya cambiado mucho, pero pip, etc. gana más funcionalidad a medida que pasa el tiempo.

Macports y Homebrew son administradores generales de paquetes para todos los idiomas. pip es un python puro. También hay conda que es python pero también hace algunas cosas de propósito general. Parece haber ampliado su alcance para cubrir otros idiomas.

pip (con pipenv ) y conda también proporcionan entornos virtuales de python que básicamente permiten diferentes conjuntos de bibliotecas para cada proyecto y le permite configurar una versión diferente de python para cada proyecto. por ejemplo, 2.7, 3.7 3.8 en los demás, debe usar pip específico de la versión para las versiones de python.

Otra diferencia está en las partes de un paquete que no tienen dependencias de Python. pip necesita compilar aquellos que los demás tendrán una configuración de compilador más sólida y, por lo general, proporcionarán un binario compilado.

Creo que para instalar pip necesitas arrancar macports o homebrew, la página de pipenv muestra homebrew. Simplemente instale python, pip y quizás pipenv desde este administrador de paquetes.

Ahora uso conda ya que parece proporcionar más y es autónomo. yo

Históricamente, usé macports para el arranque y compilé cualquier biblioteca C, por ejemplo, numpy (algunos de los paquetes matemáticos subyacentes tienen más ajustes que pip) y pip/pipenv para los bits puros de python.

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 .

Cuando colabore con otros, es mejor ponerse de acuerdo sobre cómo se configuran sus entornos de desarrollo o comenzará a toparse con anomalías y obtendrá resultados de prueba diferentes. Por tanto, la mejor herramienta es aquella en la que todos estéis de acuerdo ;-)