¿Está tratando con múltiples versiones de Python y PIP?

501

¿Hay alguna forma de pipjugar bien con múltiples versiones de Python? Por ejemplo, quiero usar pippara instalar cosas explícitamente en mi instalación del sitio 2.5 o en mi instalación del sitio 2.6.

Por ejemplo, con easy_install, yo uso easy_install-2.{5,6}.

Y sí, sé sobre virtualenv, y no, no es una solución a este problema en particular.

David Wolever
fuente
1
@YiboYang, ¿funciona con cosas como pip34y pip35?
JinSnow
2
@JinSnow Debería, siempre que pip3.xrealmente administre la versión de Python en la que desea instalar paquetes (tal vez ejecutar pip3.x -Vpara ver). O use la solución de @ Hugo para tener un mejor control sobre muchas versiones de Python.
Yibo Yang el
Posible duplicado de stackoverflow.com/questions/10919569/…
Mike D3ViD Tyson

Respuestas:

627

La recomendación actual es usar python -m pip, ¿dónde pythonestá la versión de Python que le gustaría usar? Esta es la recomendación porque funciona en todas las versiones de Python y en todas las formas de virtualenv. Por ejemplo:

# The system default python:
$ python -m pip install fish

# A virtualenv's python:
$ .env/bin/python -m pip install fish

# A specific version of python:
$ python-3.6 -m pip install fish

Respuesta anterior, dejada para la posteridad:

Desde la versión 0.8, Pip es compatible pip-{version}. Puedes usarlo igual que easy_install-{version}:

$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage

EDITAR : pip cambió su esquema para usar en pipVERSIONlugar de pip-VERSIONen la versión 1.5. Debe usar lo siguiente si tiene pip >= 1.5:

$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage

Consulte https://github.com/pypa/pip/pull/1053 para obtener más detalles.


Referencias

Hugo Tavares
fuente
12
No funciona Aunque la última versión de pip instaló un script pip-2.6, no se molestó en instalar un script pip-2.5.
Chris B.
2
Necesita actualizar su versión de python2.5 pip ... Solo crea pip- {PYVERSION} debajo de la python que está utilizando pip.
Hugo Tavares
44
Esto es incorrecto. Estoy ejecutando pip 1.2.1 con Python2.7 en Ubuntu, y no hay versiones alternativas de pip.
Cerin
2
@rodling: probablemente no lo instaló a piptravés de pip/ easy_installo get-pip.pyno tiene python2.7. si tiene python2.7, intente: pip install --upgrade pipy debería tener pipypip-2.7
Hugo Tavares
2
@JCRocamonde: el programa pipse selecciona en función de la variable de entorno $ PATH. Si desea cambiar el programa pip "predeterminado", reordene la variable de entorno $ PATH. Busque algo como "variable de entorno de ruta linux" para obtener más detalles sobre $ PATH.
Hugo Tavares
117

En Windows, puede ejecutar el módulo PIP usando una versión de Python dado a través del lanzador Python , py.exesi decide instalar durante la configuración de Python 3.

py -3 -m pip install packagename
py -2 -m pip install packagename

Puede ser aún más específico y solicitar una subversión exacta de Python:

py -3.6 -m pip install packagename

Para obtener una lista de todas las versiones de Python instaladas disponibles a través del iniciador, ejecute:

py --list

Alternativamente, puede iniciar el ejecutable Python deseado directamente:

C:/path/to/specific/python.exe -m pip install packagename
Mounica T
fuente
11
tener 2.7 y 3.5 instalados en Windows, esto funcionó de inmediato
phil_lgr
1
¿No hay manera de tener python2, python3, pip2y pip3en Windows?
thomthom
1
Esto funcionó para mí en Windows. tenía 3 instalados y luego instaló 2
daneshjai
1
¡Gracias, esto funcionó para mí! No puedo creer lo difícil que fue. (Ninguna de estas variaciones o python-3.7 -m pip install o python-3.7 -m pip install o python3.7 -m pip install funcionó para mí ...)
jeppoo1
75

/path/to/python2.{5,6} /path/to/pip install PackageName no funciona

Para que esto funcione en cualquier versión de Python que no tenga pip ya instalado, debe descargar pip y hacer python*version* setup.py install. Por ejemplo python3.3 setup.py install. Esto resuelve el error de importación en los comentarios. (Como lo sugiere @hbdgaf)

revs bwinton
fuente
44
Para que esto funcione en digamos python 3 necesitas descargar pip y hacer "python3 setup.py install". Personalmente, encuentro que esta solución no es muy agradable. Para empezar, ni siquiera sabía que el comando pip no era binario. Esto no es una crítica de @bwinton, me sorprende que no haya una mejor manera de hacerlo.
Mike Vella
28
"ImportError: ningún módulo llamado pkg_resources"
Cerin
3
Estoy desconcertado de que el problema con el importador de terror tenga más subidas que la solución al mismo comentario anterior.
RobotHumans
1
Además, / path / to / pip es esto: python2. {5,6} / Scripts / pip2. {5,6}
raul
2
Para llamar a un módulo de Python debe usarpython2.7 -m pip install PackageName
llrs
52

Tenía Python 2.6 instalado de forma predeterminada (Amazon EC2 AMI), pero necesitaba Python2.7 más algunos paquetes externos para mi aplicación. Suponiendo que ya instaló python2.7 junto con python predeterminado (2.6 en mi caso). Aquí se explica cómo instalar pip y paquetes para python2.7 no predeterminado

Instale pip para su versión de python:

curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py

Use una versión específica de pip para instalar paquetes:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python
Oleg
fuente
2
genial funcionó para mí para python 3.4 con lo siguiente: python3 get-pip.pyy luego usando el comando pip conpip34 install example
Karl Adler
Gracias. Muy útil. Probado en dos servidores diferentes.
user2099484
3
Esto funcionó cuando usé 'python2.7 get-pip.py' en lugar de 'python27 get-pip.py'
SummerEla
Hombre que se sentía incompleto pero funcionó para mí instalando pip2.6 en Centos 5.
Aaron R.
Conseguí Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipcuando lo intentépython2.6 get-pip.py
Pyderman
29

Me funcionó en Windows de esta manera:

  1. Cambié el nombre de los archivos python python.py y pythonw.exe a python3.py pythonw3.py

  2. Luego acabo de ejecutar este comando en el indicador:

    python3 -m pip install package

Angie Alejo
fuente
44
Solo para cualquier persona que descubra cómo instalar paquetes en python3 usando pip en mac, este comando es cómo instalar paquetes. ¡Pasé horas buscando y finalmente lo encontré!
sidney
25

Otras respuestas muestran cómo usar pip con Python 2.X y 3.X, pero no muestra cómo manejar el caso de múltiples distribuciones de Python (por ejemplo, Python original y Python Anaconda) .

Tengo un total de 3 versiones de Python: Python 2.7 original y Python 3.5 y Anaconda Python 3.5.

Así es como instalo un paquete en:

  1. Python original 3.5 :

    /usr/bin/python3 -m pip install python-daemon
  2. Python original 2.7 :

    /usr/bin/python -m pip install python-daemon
  3. Anaconda Python 3.5 :

    python3 -m pip install python-daemon

    o

    pip3 install python-daemon

    Más simple, ya que Anaconda anula los binarios originales de Python en el entorno del usuario.

    Por supuesto, la instalación en anaconda debe hacerse con un condacomando, esto es solo un ejemplo.


Además, asegúrese de que pip esté instalado para ese python específico. Es posible que necesite instalar manualmente pip. Esto funciona en Ubuntu 16.04:

sudo apt-get install python-pip 

o

sudo apt-get install python3-pip
cuasoft
fuente
El consejo sobre Anaconda aquí no es exacto ... no "anula" nada. El hecho de que elija la versión de Anaconda como predeterminada en su sistema es simplemente un efecto secundario de su configuración específica, cómo instaló cada intérprete y el orden de ruta de su entorno ... eso variará para otros.
Corey Goldberg
@ CoreyGoldberg Estoy de acuerdo, fue el valor predeterminado en mi instalación de Ubuntu 16.04
casi
1
Usted señor, es el hombre. De todas las explicaciones totalmente inútiles que rodean este tema, esta es la única que tiene sentido para mí. ¡Es hora de alias estos comandos y seguir con mi vida! GRACIAS.
Iofacture
14

Me encontré con este problema recientemente y descubrí que no estaba obteniendo el pip correcto para Python 3, en mi sistema Linux que también tiene Python 2.

Primero debe asegurarse de haber instalado pip para su versión de python:

Para Python 2:

sudo apt-get install python-pip

Para Python 3:

sudo apt-get install python3-pip

Luego, para instalar paquetes para una versión de Python u otra, simplemente use lo siguiente para Python 2:

pip install <package>

o para Python 3:

pip3 install <package>
Clyde
fuente
11

pip también es un paquete de python. Entonces, la forma más fácil de instalar módulos en una versión específica de Python sería a continuación

 python2.7 /usr/bin/pip install foo

o

python2.7 -m pip install foo
Prakash Palnati
fuente
10

Entonces aparentemente hay múltiples versiones de easy_install y pip . Parece ser un gran desastre. De todos modos, esto es lo que hice para instalar Django para Python 2.7 en Ubuntu 12.10:

$ sudo easy_install-2.7 pip
Searching for pip
Best match: pip 1.1
Adding pip 1.1 to easy-install.pth file
Installing pip-2.7 script to /usr/local/bin

Using /usr/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip

$ sudo pip-2.7 install django
Downloading/unpacking django
  Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded
  Running setup.py egg_info for package django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
    changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed django
Cleaning up...

$ python
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 
Timmmm
fuente
8

Desde aquí: https://docs.python.org/3/installing/

Aquí se explica cómo instalar paquetes para varias versiones que se instalan al mismo tiempo: linux, mac, posix :

python2   -m pip install SomePackage  # default Python 2
python2.7 -m pip install SomePackage  # specifically Python 2.7
python3   -m pip install SomePackage  # default Python 3
python3.4 -m pip install SomePackage  # specifically Python 3.4
python3.5 -m pip install SomePackage  # specifically Python 3.5
python3.6 -m pip install SomePackage  # specifically Python 3.6

En Windows , use el iniciador Py Python en combinación con el modificador -m:

py -2   -m pip install SomePackage  # default Python 2
py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3   -m pip install SomePackage  # default Python 3
py -3.4 -m pip install SomePackage  # specifically Python 3.4
jmunsch
fuente
También considere retirar: pipenv
jmunsch
7

En Linux, Mac OS X y otros sistemas POSIX, use los comandos de Python versionados en combinación con el -mconmutador para ejecutar la copia adecuada de pip:

python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage

(los comandos pip adecuadamente versionados también pueden estar disponibles)

En Windows, use el pyiniciador de Python en combinación con el -minterruptor:

py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3.4 -m pip install SomePackage  # specifically Python 3.4

si obtiene un error py -3.4, intente:

pip install SomePackage
Saurabh Tripathi
fuente
5

Instalación de múltiples versiones de Python y sus respectivos paquetes.

Versión de Python en la misma máquina Windows: 2.7, 3.4 y 3.6

Instalación de las 3 versiones de Python :

  • Instalé Python 2.7, 3.4 y 3.6 con las siguientes rutas

ingrese la descripción de la imagen aquí

RUTA para las 3 versiones de Python :

  • Asegúrese de que la variable PATH (en Variables del sistema) tenga las siguientes rutas incluidas: C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Renombrar los ejecutables para las versiones :

  • Cambió el nombre del ejecutable de Python en C: \ Python36 y C: \ Python34 a python36 y python34 respectivamente.

ingrese la descripción de la imagen aquí

Comprueba el símbolo del sistema con todas las versiones:

ingrese la descripción de la imagen aquí

Instalar los paquetes por separado para cada versión

ingrese la descripción de la imagen aquí

Bahubali Patil
fuente
Gracias !!! Esta es la mejor manera
rakshit ks
4

Si tiene varias versiones, así como múltiples arquitecturas (32 bits, 64 bits), deberá agregar un -32 o -64 al final de su versión.

Para Windows, vaya a cmd y escriba py --list y producirá las versiones que haya instalado. La lista se verá así:

Installed Pythons found by py Launcher for Windows
 -3.7-64 *
 -3.7-32
 -3.6-32

El comando completo como ejemplo será:

py -3.6-32 -m pip install (package)

Si desea obtener más profundidad, para instalar una versión específica de un paquete en una versión específica de python, use == (versión) después del paquete. Como ejemplo,

py -3.6-32 -m pip install opencv-python==4.1.0.25
Brad M
fuente
2

La mayoría de las respuestas aquí abordan el problema, pero quiero agregar algo que continuamente me confunde con respecto a la creación de una instalación alternativa de python en el /usr/localCentOS 7. Cuando instalé allí, parecía que pip funcionaba ya que podía usar pip2.7 instally Instalaría módulos. Sin embargo, lo que no pude entender fue por qué mi versión recién instalada de python no veía lo que estaba instalando.

Resulta en CentOS 7 que ya hay un python2.7 y un pip2.7 en la /usr/bincarpeta. Para instalar pip para su nueva distribución de python, necesita decirle específicamente a sudo que vaya a/usr/local/bin

sudo /usr/local/bin/python2.7 -m ensurepip

Esto debería instalar pip2.7 en su /usr/local/bincarpeta junto con su versión de python. El truco es que cuando desea instalar módulos, debe modificar la $PATHvariable sudo para incluir /usr/local/bino debe ejecutar

sudo /usr/local/bin/pip2.7 install <module>

si quieres instalar un nuevo módulo. Me llevó una eternidad recordar que sudono estaba viendo de inmediato /usr/local/bin.

JeffP
fuente
2

Aquí está mi opinión sobre el problema. Funciona para Python3. Las características principales son:

  • Cada versión de Python se compila desde la fuente
  • Todas las versiones se instalan localmente.
  • No estropea la instalación predeterminada de Python de su sistema de ninguna manera
  • Cada versión de Python está aislada con virtualenv

Los pasos son los siguientes:

  1. Si tiene varias versiones adicionales de Python instaladas de alguna otra manera, deshágase de ellas, por ejemplo, elimine $ HOME / .local / lib / python3.x , etc. (también las instaladas globalmente). Sin embargo, no toques la versión predeterminada de python3 de tu sistema.

  2. Descargue el código fuente para diferentes versiones de Python bajo la siguiente estructura de directorios:

    $HOME/
        python_versions/ : download Python-*.tgz packages here and "tar xvf" them.  You'll get directories like this:
          Python-3.4.8/
          Python-3.6.5/
          Python-3.x.y/
          ...
  3. En cada directorio "Python-3.xy /", haga lo siguiente (¡ NO use "sudo" en ninguno de los pasos!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. En "python_versions /" crea archivos como este:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Ahora, cada vez que desee optar por python3.x, haga

    source $HOME/python_versions/env_python3x.bash

    para entrar en el virtualenv

  6. Mientras esté en virtualenv, instale sus paquetes de python favoritos con

    pip install --upgrade package_name
  7. Para salir de la versión virtualenv y python simplemente escriba "deactivate"

ACTUALIZAR

Parece que --no-site-packagesestá en desuso. Hay una solución fácil para esto: una vez que haya activado virtualenv, simplemente apunte la variable HOME env a otro lugar que no sea su directorio de inicio real, es decir:

export HOME=some/where/else

Una buena manera de hacer esto en general es:

  • Crea virtualenv
  • Activa virtualenv
  • Si desea "reciclar" bibliotecas existentes en su virtualenv, vincúlelas desde su instalación existente, es decir ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • hacer export PYTHONPATH=,export HOME=/some/other/dir

Ahora debería tener virtualenv aislado de forma personalizada.

El Sampsa
fuente
0

Contexto: Archlinux

Acción:
Instalar python2-pip:
sudo pacman -S python2-pip

Ahora tienes pip2.7:
sudo pip2.7 install boto

Prueba (en mi caso necesitaba 'boto'):
ejecuta los siguientes comandos:

python2
import boto

Éxito: sin error.

Salida: Ctrl+D

Paul Parker
fuente
0

por ejemplo, si configura otras versiones (por ejemplo, 3.5) como predeterminadas y desea instalar pip para python 2.7:

  1. descargue pip en https://pypi.python.org/pypi/pip (tar)
  2. descomprimir el archivo tar
  3. cd al directorio del archivo
  4. sudo python2.7 setup.py install
salomeow
fuente
0

Puede ir a, por ejemplo, C: \ Python2.7 \ Scripts y luego ejecutar cmd desde esa ruta. Después de eso, puede ejecutar pip2.7 instalar su paquete ...

Eso instalará el paquete para esa versión de Python.

matón_
fuente
0

Esto es probablemente lo completamente incorrecto (soy un novato de Python), pero entré y edité el archivo pip

#!/usr/bin/env python3 <-- I changed this line.

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
Jerinaw
fuente
0

Para Windows específicamente: \ path \ to \ python.exe -m pip install PackageName funciona.

Aaquila
fuente
0

para Blender:

/usr/bin $ python3.7 -m pip install irc
K88
fuente