Cómo instalar Python 2.xy Python 3.x en Windows

230

Hago la mayor parte de mi programación en Python 3.x en Windows 7, pero ahora necesito usar la Biblioteca de imágenes de Python (PIL), ImageMagick y wxPython, todo lo cual requiere Python 2.x.

¿Puedo tener Python 2.xy Python 3.x instalados en Windows 7? Cuando ejecuto un script, ¿cómo "elegiría" qué versión de Python debería ejecutarlo? ¿Podrán los programas mencionados manejar múltiples versiones de Python instaladas a la vez? He buscado durante horas y horas cómo hacer esto en vano.

Gracias.

dln385
fuente
2
Sí, como dice @NickT, eso es lo más fácil. Desafortunadamente, ninguna de las respuestas a continuación ofrece un enfoque simple y directo. (Los que mencionan la versión 3.3 son los más cercanos). Para una mejor respuesta, vea la respuesta aceptada bajo la pregunta duplicada: stackoverflow.com/a/17245543/1593924 En pocas palabras, use el nuevo lanzador "py", con o sin -3 parámetro. Y considere agregar shebangs (#!) A sus scripts para que no necesite un parámetro.
Jon Coombs el
1
Además, algunos han encontrado útiles los detalles que publiqué aquí: stackoverflow.com/a/13533958/1593924
Jon Coombs el

Respuestas:

150

Descubrí que la forma formal de hacer esto es la siguiente:

Simplemente instale dos (o más, usando sus instaladores) versiones de Python en Windows 7 (para mí trabajo con 3.3 y 2.7).

Siga las instrucciones a continuación, cambiando los parámetros para sus necesidades.

Cree la siguiente variable de entorno (por defecto en doble clic):

Name:  PY_PYTHON
Value: 3

Para iniciar un script en un intérprete en particular, agregue el siguiente shebang (comienzo del script):

#! python2

Para ejecutar un script con un intérprete específico, use el siguiente comando de solicitud:

> py -2 MyScript.py

Para iniciar un intérprete específico:

> py -2

Para iniciar el intérprete predeterminado (definido por la variable PY_PYTHON):

> py

Recursos

Documentación: Uso de Python en Windows

PEP 397 - Lanzador de Python para Windows

Pedro Vagner
fuente
8
Además, para usar easy_install o pip con ambas versiones, cambie la ruta para incluir c:\python35;c:\python35\scripts;c:\python27\scripts;. Esto permite el uso de pip2/ pip3, y easy_install-2.7/ en easy_install-3.5lugar de pipy easy_install.
rdtsc
1
No funcionará con varios programas que no envían su propio Python e insisten en usar la versión del sistema, y ​​no respetan el iniciador.
Jonathan Baldwin
1
No, no agregue Python a la ruta. Uso py -m pip install .... Agregue interruptores después pypara elegir bajo qué Python ejecutar pip como se indicó anteriormente.
Mark Tolonen
75

Lo que hice fue descargar 2.7.6 y 3.3.4. Python 3.3.4 tiene la opción de agregarle la ruta en la variable de entorno para que así se haya hecho. Básicamente, simplemente agregué manualmente Python 2.7.6.

Cómo...

  1. Inicio> en el tipo de búsqueda en el entorno, seleccione "Editar variables de entorno en su cuenta" 1

  2. Desplácese hacia abajo hasta Ruta, seleccione ruta, haga clic en editar.

  3. Añadir C: \ Python27; por lo que debería tener rutas a ambas versiones de Python allí, pero si no lo hace, puede editarlo fácilmente para que lo haga ..... C: \ Python27; C: \ Python33;

  4. Navegue a la carpeta Python27 en C: \ y cambie el nombre de una copia de python.exe a python2.exe

  5. Navegue a la carpeta Python34 en C: \ y cambie el nombre de una copia de python.exe a python3.exe

  6. Prueba: abra el símbolo del sistema y escriba python2 .... BOOM! Python 2.7.6. salir

  7. Prueba: abra el símbolo del sistema y escriba python3 .... BOOM! Python 3.4.3. salir

Nota: (para no romper los comandos pip en los pasos 4 y 5, mantenga una copia de python.exe en el mismo directorio que el archivo renombrado)

usuario3458330
fuente
43
¡Esto romperá pip2 y pip3! No reemplace python, cópielo y cambie el nombre del segundo archivo a python2 / python3.
brunofitas
1
Solo una advertencia: no pude desinstalar Python hasta que volví a recuperar los nombres. Mi consejo es hacer copias y renombrarlas, pero dejar en paz los archivos originales de python.exe ** como también mencionó bruno.
Logic1
2
¿Podría procesar los comentarios de brunofitas en la respuesta?
030
Sí, acabo de cambiar el nombre de python.exe en la instalación de Python3 a python3.exe. Creo que esto sucede automáticamente con python en un entorno * nix. Por supuesto, no hay archivos .exe, pero hay un programa python2 y python3. :)
user3870315
Si tiene una biblioteca / complemento que depende de cualquiera de las versiones de python, asegúrese de que la versión venga primero en su variable de entorno PATH
aproximadamente el
51

Tengo múltiples versiones en windows. Solo cambio el nombre exe de la versión a la que no estoy predeterminado.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

En cuanto a los instaladores de paquetes, la mayoría de los instaladores exe le permiten elegir la instalación de Python para agregar el paquete también. Para la instalación manual, consulte la opción --prefix para definir dónde se debe instalar el paquete:

http://docs.python.org/install/index.html#alternate-installation-windows-the-prefix-scheme

Monkut
fuente
Esto funcionó. Antes de hacer este cambio, cuando intenté ejecutar un programa en Python 2.7, todavía se ejecutó en Python 3.1 (Quizás porque Windows 7 no puede manejar dos programas diferentes con el mismo nombre). Después de cambiar el nombre de los exe como se muestra, todo salió bien.
dln385
44
@ dln385: Si respondió su pregunta, debe aceptarla haciendo clic en la marca de verificación.
dappawit
1
Esto funcionó para mí también. Tuve un conflicto entre Python 2.7 y Python 3.2. Como instalé Python 3.2 primero (y lo configuré adecuadamente como una variable ambiental), no pude acceder a Python 2.7 en el indicador (en cambio, obtuve Python 3.2). Quería usar Python 2.7 por defecto, por lo tanto, cambié python.exe a python3.2.exe y mantuve python.exe de Python 2.7 sin cambios. Eso hizo el truco.
Robert Smith el
No he instalado un nuevo python3 en Windows desde hace un tiempo, pero la versión que tengo incluye pip as pip3y pip3.4. (también lo incluye como pip, pero creo que eliminarlo debería resolver cualquier conflicto con python2). En realidad, no tengo C:\Python34\Scriptsen mi Path, así que no he tenido ningún problema relacionado con pip ...
monkut
30

Si usa Anaconda Python, puede instalar fácilmente varios entornos.

Digamos que tenía instalado Anaconda Python 2.7 y quería un entorno python 3.4:

conda create -n py34 python=3.4 anaconda

Luego para activar el entorno:

activate py34

Y a deactive:

deactivate py34

(Con Linux, deberías usar source activate py34).

Enlaces:

Descargar Anaconda Python

Instrucciones para ambientes

philshem
fuente
IMO conda es, con mucho, la mejor manera de meterse con diferentes instalaciones de Python. Arruiné tantas cosas antes de mudarme a Anaconda.
jrinker
11

Para instalar y ejecutar cualquier versión de Python en el mismo sistema, siga mi guía a continuación.


Por ejemplo, digamos que desea instalar Python 2.xy Python 3.x en el mismo sistema de Windows.

  1. Instale sus dos versiones binarias en cualquier lugar que desee.

    • Cuando se le solicite, no registre sus extensiones de archivo y
    • no los agregue automáticamente a la variable de entorno PATH
  2. Ejecutando simplemente el comando, pythonel ejecutable que se cumple por primera vez en PATH será elegido para el lanzamiento. En otras palabras, agregue los directorios de Python manualmente. El que agregue primero se seleccionará cuando escriba python. Los programas de Python consecutivos (orden creciente de que sus directorios se coloquen en PATH) se elegirán de la siguiente manera:

    • py -2 para el segundo python
    • py -3 para el tercero, pythonetc.
  3. No importa el orden de "pitones" puedes:

    • ejecutar scripts Python 2.x usando el comando: py -2 (funcionalidad Python 3.x) (es decir, se seleccionará el primer programa de instalación de Python 2.x que se encuentre en su RUTA)
    • ejecutar scripts Python 3.x usando el comando: o py -3 (es decir, se seleccionará el primer programa de instalación de Python 3.x que se encuentre en su RUTA)

En mi ejemplo, primero instalé Python 2.7.14 y Python 3.5.3. Así es como mi variable PATH comienza con:

RUTA = C: \ Archivos de programa \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Archivos de programa \ Python_3.6 \ Scripts \; C: \ Archivos de programa \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Archivos de programa (x86) \ Archivos comunes \ Intel \ Shared

...

Tenga en cuenta que Python 2.7 es el primero y Python 3.5 el segundo.

  • Entonces, el pythoncomando en ejecución lanzará Python 2.7 (si Python 3.5 el mismo comando lanzaría Python 3.5).
  • La ejecución py -2inicia Python 2.7 (porque sucede que la segunda Python es Python 3.5, que es incompatible con py -2). La ejecución py -3inicia Python 3.5 (porque es Python 3.x)
  • Si tenías otra pitón más adelante en el camino que lanzaría este modo: py -4. Esto puede cambiar si / cuando se lanza la versión 4 de Python.

Ahora py -4o py -5etc. en las salidas de mi sistema: Requested Python version (4) not installedo Requested Python version (5) not installedetc.

Esperemos que esto sea lo suficientemente claro.

Nikos
fuente
¿Cómo podría especificar una instalación de pip en uno de los discos de Python?
Víctor Martínez
Para el primer pitón encontrado simplemente escriba pip. Para cualquier otra python instalada, debe especificar manualmente la ruta, es decir. C:\Python27\Scripts\pip.py [parameters]. (Por supuesto, como acceso directo, puede poner cualquier exe que desee en una variable de entorno).
Nikos
@ Nik-Lz, ¿a qué comando "py -2" se refiere? Parece que no tengo estos en mi Windows 7.
Janos
2
Así es exactamente cómo se debe usar Python en Windows en caso de múltiples versiones.
getName
8

Esto es lo que puedes hacer:

Instalar cmder . Abra y use Cmder como lo haría con su terminal cmd. Use el alias de comando para crear alias de comando.

Hice lo siguiente:

alias python2 = c:\python27\python.exe
alias python3 = c:\python34\python.exe

¡Y eso es! ;-)

usuario402429
fuente
66
set-alias python2 c:\python27\python.exe
Profeta Daniel
Use set-alias como muestra el ejemplo si usa Powershell. En ese caso no habría necesidad de instalar Cmder.
Profeta Daniel
@ProphetDaniel Esto debería publicarse como una respuesta separada. Responde totalmente la pregunta original.
Dr_Zaszuś
7

De hecho, solo pensé en una solución interesante. Si bien Windows no le permitirá alias de programas fácilmente, en su lugar puede crear archivos por lotes renombrados que llamarán al programa actual.

En lugar de renombrar el ejecutable que romperá muchas cosas, incluido pip, cree el archivo python2.bat en el mismo directorio que python2.exe. Luego agregue la siguiente línea:

%~dp0python %*

¿Qué significa esta sintaxis arcaica? Bueno, es un script por lotes, (versión de Windows de bash). % ~ dp0 obtiene el directorio actual y% * solo pasará todos los argumentos a Python que se pasaron al script.

Repita para python3.bat

También puede hacer lo mismo para pip y otras utilidades, simplemente reemplace la palabra python en el archivo con pip o lo que sea el nombre de archivo. El alias será el nombre del archivo.

Lo mejor de todo, cuando se agrega a la RUTA, Windows ignora la extensión que se está ejecutando

python3

Lanzará la versión python3 y el comando python2 lanzará la versión python2.

Por cierto, esta es la misma técnica que Spyder utiliza para agregarse a la ruta en Windows. :)

Skylion
fuente
1
Impresionante solución sin modificar los archivos existentes de python.
Om Prakash
3

Puede instalar varias versiones de Python one machine, y durante la configuración, puede elegir que una de ellas se asocie con extensiones de archivo Python. Si instala módulos, habrá diferentes paquetes de instalación para diferentes versiones, o puede elegir a qué versión desea apuntar. Como generalmente se instalan en el directorio de paquetes del sitio de la versión del intérprete, no debería haber ningún conflicto (pero no lo he probado). Para elegir qué versión de Python, tendría que especificar manualmente la ruta al intérprete si no es la predeterminada. Hasta donde yo sé, compartirían las mismas variables PATH y PYTHONPATH, lo que puede ser un problema.

Nota: ejecuto Windows XP. No tengo idea si algo de esto cambia para otras versiones, pero no veo ninguna razón para que lo haga.

li.davidm
fuente
3
Tengo Python 2.5, 2.6 y 3.1 todos instalados simultáneamente, ni siquiera se me ocurrió que podría tener que hacer algo más difícil que simplemente ejecutar todos los instaladores para cada versión que necesito.
SingleNegationElimination
3

Lo que hice en mi propia computadora con Windows donde tengo instalados Python 2.7 y Python 3.4 es que escribí un archivo .bat simple en el mismo directorio que mis archivos Python.exe. Se ven algo así como

cmd /k "c:\python27\python.exe" %*

El% * le permite agregar argumentos (archivos Python) después. Creo que / k mantiene el indicador abierto después de que termina de ejecutar el script. Luego lo guardo como python27.bat Luego voy a mi directorio de Python 3 y hago un archivo bat allí. Ahora en mi línea de comando puedo escribir

Python27 helloworld.py

O

Python34 helloworld.py

Y se ejecutarán en sus respectivas versiones de Python. Asegúrese de que c: \ python27 y c: \ python34 estén en sus variables de entorno.

Recibí mi respuesta de aquí

Bryan Kimani
fuente
2

Hice esto en tres pasos siguiendo las instrucciones aquí: Todo esto se toma directamente desde aquí: http://ipython.readthedocs.io/en/stable/install/kernel_install.html . Actualmente estoy ejecutando Python 2.x en Windows 8 y tengo instalado Anaconda 4.2.13.

1) Primero instale la última versión de python:

conda create -n python3 python=3 ipykernel

2) Luego active Python3

activate python3

3) Instale el kernel:

python -m ipykernel install --user

Si tiene instalado Python 3 y desea instalar 2, cambie el 2 y el 3 anteriores. Cuando abre un nuevo cuaderno, ahora puede elegir entre Python 2 o 3.

Moiz Kapadia
fuente
1

Verifique las variables de entorno de su sistema después de instalar Python, los directorios de python 3 deben ser primero en su variable PATH, luego python 2.

Cualquier variable de ruta que coincida primero es la que usa Windows.

Como siempre, py -2 lanzará python2 en este escenario.

Spitfire19
fuente
1

Encontré ese problema yo mismo e hice mis lanzadores en un .bat para que pudieras elegir la versión que deseas lanzar.

El único problema es que su .py debe estar en la carpeta de Python, pero de todos modos aquí está el código:

Para Python2

@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Para Python3

@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Guárdelos como .bat y siga las instrucciones dentro.

KinDa
fuente
0

Instale el que más usa (3.3 en mi caso) sobre el otro. Eso obligará a IDLE a usar el que quieras.

Alternativamente (desde python3.3 README):

Instalar múltiples versiones

En los sistemas Unix y Mac, si tiene la intención de instalar varias versiones de Python utilizando el mismo prefijo de instalación (argumento de prefijo para el script de configuración), debe tener cuidado de que su ejecutable principal de Python no se sobrescriba con la instalación de una versión diferente. Todos los archivos y directorios instalados usando "make altinstall" contienen la versión mayor y menor y, por lo tanto, pueden vivir lado a lado. "make install" también crea $ {prefix} / bin / python3 que se refiere a $ {prefix} /bin/pythonX.Y. Si tiene la intención de instalar varias versiones utilizando el mismo prefijo, debe decidir qué versión (si la hay) es su versión "primaria". Instale esa versión usando "make install". Instale todas las demás versiones utilizando "make altinstall".

Por ejemplo, si desea instalar Python 2.6, 2.7 y 3.3 siendo 2.7 la versión principal, ejecutaría "make install" en su directorio de compilación 2.7 y "make altinstall" en los demás.

abudhabikid
fuente
0

Solo tuve que instalarlos. Luego utilicé el software gratuito (y portátil) en http://defaultprogramseditor.com/ en "Configuración de tipo de archivo" / "Menú contextual" / search: "py", elegí el archivo .py y agregué un comando 'abrir' para 2 IDLE copiando el comando existente llamado 'abrir con IDLE, cambiando los nombres a IDLE 3.4.1 / 2.7.8 y reemplazando los números de archivo de sus respectivas versiones en la ruta del programa. Ahora solo tengo que hacer clic derecho en el archivo .py y elegir qué IDLE quiero usar. Puede hacer lo mismo con intérpretes directos si lo prefiere.

suero de leche
fuente
-1

Solo funciona si está ejecutando su código en su IDE de Python

Tengo Python 2.7 y Python 3.3 instalados en mi sistema operativo Windows. Si intento iniciar un archivo, generalmente se abrirá en el IDE de Python 2.7. La forma en que resolví este problema fue cuando elijo ejecutar mi código en Python 3.3, abro Python 3.3 IDLE (Python GUI), selecciono el archivo, abro mi archivo con el IDLE y lo guardo. Luego, cuando ejecuto mi código, se ejecuta en IDLE con el que lo abrí actualmente. Funciona al revés con 2.7.

usuario3295433
fuente
-1

He instalado Python 2.7.13 y Python 3.6.1 en Windows 10pro y recibí el mismo "error grave" cuando probé pip2 o pip3.

Lo que hice para corregir esto fue ir a la ubicación de python.exe para los archivos python 2 y python 3 y crear una copia de cada uno, luego cambié el nombre de cada copia a python2.exe y python3.exe dependiendo de la versión de python en el Carpeta de Instalacion. Por lo tanto, tenía en cada carpeta de instalación de Python un archivo python.exe y un python2.exe o python3.exe dependiendo de la versión de python.

Esto resolvió mi problema cuando escribí pip2 o pip3.

eddy onyango
fuente
-2

Si no puede hacer que nada funcione, abra un intérprete en la versión que elija (prefiero usar iPython) y:

import subprocess

subprocess.call('python script.py -flags')

Utiliza cualquier versión de Python con la que esté operando actualmente. Funciona bien para un solo script, pero se saldrá rápidamente de control si hay muchos scripts que ejecute, en cuyo caso siempre puede hacer un archivo por lotes con todas estas llamadas dentro. No es la respuesta más elegante, pero funciona.

¿Hay alguna manera de crear alias para diferentes versiones de Python a la Linux?

usuario2796022
fuente