¿Tratar con varias versiones de Python y PIP?

¿Hay alguna forma de hacer que pip bien con varias versiones de Python? Por ejemplo, quiero usar pip para instalar explícitamente las cosas en la instalación de mi sitio 2.5 o en la instalación de mi sitio 2.6.

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

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

La recomendación actual es usar python -m pip , donde python es la versión de Python que te 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 soporta pip-{version} . Puedes usarlo de la misma manera que easy_install-{version} :

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

EDIT : pip cambió su esquema para usar pipVERSION lugar de pip-VERSION en la versión 1.5. Deberías usar lo siguiente si tienes pip >= 1.5 :

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

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


Referencias:

En Windows, puede ejecutar el módulo pip mencionando la versión de python (debe asegurarse de que el iniciador esté en su ruta)

py -3.4 -m pip install pyfora

py -2.7 -m pip install pyfora

Alternativamente, puedes llamar al ejecutable de python deseado directamente de esta manera:

/path/to/python.exe -m pip install pyfora

/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, necesita 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. (Según lo sugerido por @hbdgaf)

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í es 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 la versión específica de pip para instalar paquetes:

 pip2.7 install mysql-connector-python --allow-external mysql-connector-python 

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. Entonces acabo de ejecutar este comando en el indicador:

    python3 -m pip install package

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 de Anaconda) .

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

Aquí es cómo instalo un paquete en:

  1. Python 3.5 original:

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

     /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 de Python originales en el entorno del usuario.

    Por supuesto, la instalación en anaconda se debe hacer con el comando conda , esto es solo un ejemplo.


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

 sudo apt-get install python-pip 

o

 sudo apt-get install python3-pip 

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  

o para Python 3:

 pip3 install  

pip es también un paquete de python. Por lo tanto, la forma más sencilla de instalar módulos en una versión específica de Python sería la siguiente.

  python2.7 /usr/bin/pip install foo 

o

 python2.7 -m pip install foo 

Así que aparentemente hay varias versiones de easy_install y pip . Parece ser un gran lío. 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 >>> 

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

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

(También pueden estar disponibles los comandos pip debidamente versionados)

En Windows, use el py Python en combinación con el -m :

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

si obtienes un error para py -3.4 entonces prueba:

 pip install SomePackage 

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

Aquí es 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 de 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 

La mayoría de las respuestas aquí abordan el problema, pero quiero agregar algo que me estaba confundiendo continuamente con respecto a la creación de una instalación alternativa de python en /usr/local en CentOS 7. Cuando instalé allí, parecía que pip estaba funcionando ya que Podría usar pip2.7 install e 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 que en CentOS 7 ya hay un python2.7 y un pip2.7 en la carpeta /usr/bin . Para instalar pip para su nueva distribución de Python, debe indicar específicamente a sudo que vaya a /usr/local/bin

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

Esto debería tener instalado pip2.7 en su carpeta /usr/local/bin junto con su versión de python. El truco es que cuando desea instalar módulos, necesita modificar la variable sudo $PATH para incluir /usr/local/bin o debe ejecutar

 sudo /usr/local/bin/pip2.7 install  

Si quieres instalar un nuevo módulo. Me tomó una eternidad recordar que el sudo no estaba viendo inmediatamente /usr/local/bin .

Contexto: Archlinux

Acción:
Instale 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: No hay error.

Salir: Ctrl + D

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

  1. descarga pip en https://pypi.python.org/pypi/pip (tar)
  2. descomprimir archivo tar
  3. cd al directorio del archivo
  4. sudo python2.7 setup.py instalar

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.

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

  • Cada versión de Python se comstack desde la fuente
  • Todas las versiones se instalan localmente
  • No destruye la instalación de Python predeterminada 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 extra 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 directorio:

     $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.xy/ ... 
  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.xy/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 el virtualenv, instale sus paquetes favoritos de python con

     pip install --upgrade package_name 
  7. Para salir de la versión virtualenv y python solo escribe “desactivar”

Es probable que esto sea algo completamente incorrecto (soy un PyOton Noob), pero simplemente fui 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()) 

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

Versión de Python en la misma máquina de 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

introduzca la descripción de la imagen aquí

PATH para las 3 versiones de Python :

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

Renombrando los ejecutables para versiones :

  • Se cambió el nombre del ejecutable de python en C: \ Python36 y C: \ Python34 a python36 y python34 respectivamente.

introduzca la descripción de la imagen aquí

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

introduzca la descripción de la imagen aquí

Instalando los paquetes por separado para cada versión.

introduzca la descripción de la imagen aquí