pip o pip3 para instalar paquetes para Python 3?

119

Tengo una Macbook con OS X El Captain. Creo que Python 2.7viene preinstalado. Sin embargo, Python 3.5también instalé . Cuando comencé a usar Python 3, leí que si quiero instalar un paquete, debo escribir:

pip3 install some_package

De todos modos, ahora cuando uso

pip install some_package

Me some_packageinstalan para Python 3. Quiero decir que puedo importarlo y usarlo sin problemas. Por otra parte, cuando escribo simplemente pip3en Terminal, Tengo este mensaje sobre el uso:

Usage:   
  pip <command> [options]

que es el mismo mensaje que recibo cuando escribo solo pip.

¿Significa que en las versiones anteriores, las cosas eran diferentes y ahora pipy pip3se pueden usar indistintamente? Si es así, y por el bien del argumento, ¿cómo puedo instalar paquetes para en Python 2lugar de Python 3?

Ammar Alyousfi
fuente

Respuestas:

73

Su pipes un enlace suave a la misma ruta de archivo ejecutable con pip3. puede usar los comandos a continuación para verificar dónde están sus rutas pipy las pip3reales:

$ ls -l `which pip`
$ ls -l `which pip3`

También puede utilizar los siguientes comandos para conocer más detalles:

$ pip show pip
$ pip3 show pip

Cuando instalamos diferentes versiones de Python, podemos crear enlaces suaves para

  • establecer pip predeterminado en alguna versión.
  • hacer diferentes enlaces para diferentes versiones.

Es la misma situación con python, python2,python3

Más información a continuación si está interesado en cómo sucede en diferentes casos:

CSJ
fuente
1
Creo que esto está mal. Mi pip3 también se llama a sí mismo simplemente pip en su salida de ayuda, aún así, pip simple instala paquetes de Python 2 en mi sistema. Creo que stackoverflow.com/a/40832677/188108 es correcto, al menos está de acuerdo con mis observaciones.
Torsten Bronger
cambia en qué entorno y cómo se instala Python, esta respuesta es para dar una pista de cómo saber que pip funciona y responder a la situación del interrogador. si no es el mismo en su sistema, aún puede utilizar la misma forma para averiguar por qué. no significa que sea una respuesta incorrecta.
CSJ
1
Dudo que. No tengo Mac, pero en las versiones de Ubuntu que probé, las variantes de pip no son enlaces simbólicos. En cambio, son pequeños scripts de Python que difieren solo en la línea shebang.
Torsten Bronger
sí, eso es lo que quiero decir, cambia en el entorno y la forma en que instala Python (brew, apt, pyenv, compilar manualmente, etc.) y la situación del interrogador es porque son enlaces suaves, y usamos ls -ly pip showpara verificar el motivo. y, por supuesto, esta respuesta es para responder a su pregunta.
CSJ
No creo que hubiera enlaces simbólicos en la computadora del interrogador. No encuentro ninguna referencia de que pip haya funcionado / funcione de esta manera.
Torsten Bronger
26

Si tenía python 2.xy luego instaló python3, su pip apuntará a pip3. puede verificarlo escribiendo pip --versioncuál sería el mismo que pip3 --version.

En su sistema ahora tiene pip, pip2 y pip3 .

Si lo desea, puede cambiar pip para que apunte a pip2 en lugar de pip3.

apadana
fuente
1
¿cómo se cambia eso?
ahnbizcad
3
@ahnbizcad La forma más fácil es definir un alias como este: alias pip = "pip3"
apadana
2
Hice esto, pero mi pip3 era v9 cuando pip era v10, así que escribí pip3 install --upgrade pipe hizo ambos v10
Kevin Danikowski
2
Esta respuesta es incorrecta. pip no apuntará a pip3. pip instalará los paquetes de Python 2 y pip3 instalará los paquetes de Python 3. Probado en Lubuntu 18.10.
Torsten Bronger
@TorstenBronger ¿cuál fue el orden de las instalaciones de Python en su entorno?
apadana
14

Cuando lo instala python3, pip3se instala. Y si no tiene otra instalación de Python (como python2.7), se crea un enlace que apunta pipa pip3.

También lo pipes un enlace apip3 si no hay otra versión de python instalada (que no sea python3). pipgeneralmente apunta a la primera instalación.

Ani Menon
fuente
7

Este es un tema complicado. Al final, si lo invoca pip, se invocará pip2o pip3, dependiendo de cómo haya configurado su sistema.

Max Uppenkamp
fuente
6

Por ilustración:

pip --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

pip3 --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

python --version
  Python 3.7.3

which python
  /usr/bin/python

ls -l '/usr/bin/python'
  lrwxrwxrwx 1 root root 7 Mar 26 14:43 /usr/bin/python -> python3

which python3
  /usr/bin/python3

ls -l /usr/bin/python3
  lrwxrwxrwx 1 root root 9 Mar 26 14:43 /usr/bin/python3 -> python3.7

ls -l /usr/bin/python3.7
  -rwxr-xr-x 2 root root 14120 Mar 26 14:43 /usr/bin/python3.7

Por lo tanto, mi python en mi sistema predeterminado (Python 3.7.3) pip es pip3 .

Victoria Stuart
fuente
5

Creo pip, pip2y pip3no son enlaces suaves a la misma ruta de archivo ejecutable. Tenga en cuenta estos comandos y resultados en mi terminal linux:

mrz@mrz-pc ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10  2016 /usr/bin/pip
mrz@mrz-pc ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10  2016 /usr/bin/pip2
mrz@mrz-pc ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10  2016 /usr/bin/pip3
mrz@mrz-pc ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
mrz@mrz-pc ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
mrz@mrz-pc ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)

Como ves, existen en diferentes caminos.

pip3 siempre opera solo en el entorno Python3, como lo hace pip2 con Python2. pip opera en cualquier entorno que sea apropiado para el contexto. Por ejemplo, si está en un venv de Python3, pip funcionará en el entorno de Python3.

Mohammad Reza
fuente
Diría que es un poco engañoso decir que pip está vinculado a cualquier entorno que sea apropiado para el contexto. En el caso de venv, el ejecutable pip es específico de venv y no del sistema. A menos que haya instalado varias versiones de python en el mismo venv, no puedo ver que este problema surja allí. Cuando no se usa un venv, la versión de pip usada a veces no es intuitiva y depende de la configuración de su sistema (a menudo se determina por qué versión de Python se instaló primero, como han dicho otros). Pero Pip no tiene ninguna inteligencia que use para seleccionar una versión dinámicamente
Luke Baumann
3

Si instaló Python 2.7, creo que podría usar pip2e pip2.7instalar paquetes específicamente para Python 2, como

pip2 install some_pacakge

o

pip2.7 install some_package

Y puede usar pip3o pip3.5instalar paquetes específicamente para Python 3.

mikeqfu
fuente
1

En mi instancia de Windows, y no entiendo completamente mi entorno, el uso de pip3 para instalar el paquete kaggle-cli funcionó, mientras que pip no. Estaba trabajando en un entorno de conda y los entornos parecen ser diferentes.

(fastai) C: \ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip --version

pip 9.0.1 de C: \ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ site-packages (python 3.6)

(fastai) C: \ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip3 --version

pip 9.0.1 de c: \ users \ redact \ appdata \ local \ programmes \ python \ python36 \ lib \ site-packages (python 3.6)

PM
fuente
0

Dado un virtualenv de Python 3.6 activado en somepath / venv , los siguientes alias resolvieron los diversos problemas en una macOS Sierra donde pip insistía en apuntar a 2.7 Python de Apple.

alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

Esto no funcionó tan bien cuando tuve que hacerlo sudo pipya que el usuario root no sabe nada sobre mi alias o el virtualenv, por lo que tuve que agregar un alias adicional para manejar esto también. Es un truco, pero funciona, y sé lo que hace:

alias sudopip='sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

antecedentes:

pip3 no existía para iniciar ( comando no encontrado ) y which pipdevolvería /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip , el Apple Python.

Python 3.6 se instaló a través de macports.

Después de la activación del 3.6 virtualenv con el que quería trabajar, which pythondevolvería somepath / venv / bin / python

De alguna manera pip installharía lo correcto y golpearía mi virtualenv, pero pip listlanzaría paquetes de Python 2.7.

Para Python, esto está muy por debajo de mis expectativas en términos de amigabilidad para principiantes.

JL Peyret
fuente