Cómo ejecutar múltiples versiones de Python en Windows

170

Tenía dos versiones de Python instaladas en mi máquina (versiones 2.6 y 2.5). Quiero ejecutar 2.6 para un proyecto y 2.5 para otro.

¿Cómo puedo especificar cuál quiero usar?

Estoy trabajando en Windows XP SP2.

Bilal Basharat
fuente
3
Un buen consejo para hacer preguntas es explicar lo que ha intentado y de qué manera falló. Entonces: ¿Qué probaste y de qué manera no funcionó?
Lennart Regebro
Tenga en cuenta que no pude encontrar ninguna pregunta anterior sobre esto en Windows, así que cambié el título para reflejar eso.
Lennart Regebro
Si desea ejecutar 3.3 junto con 2.7, esta es la respuesta más estandarizada : - stackoverflow.com/questions/15912063/…
Omar Tariq

Respuestas:

135

Ejecutar una copia diferente de Python es tan fácil como iniciar el ejecutable correcto. Menciona que ha comenzado una instancia de Python, desde la línea de comandos, simplemente escribiendo python.

Lo que esto hace en Windows es rastrear la %PATH%variable de entorno, buscando un ejecutable, ya sea un archivo por lotes ( .bat), un archivo de comando ( .cmd) o algún otro ejecutable para ejecutar (esto está controlado por la PATHEXTvariable de entorno), que coincide con el nombre dado. Cuando encuentra el archivo correcto para ejecutar el archivo se está ejecutando.

Ahora, si ha instalado dos versiones de Python 2.5 y 2.6, la ruta tendrá sus dos directorios, algo así, PATH=c:\python\2.5;c:\python\2.6pero Windows dejará de examinar la ruta cuando encuentre una coincidencia.

Lo que realmente necesita hacer es llamar explícitamente una o ambas aplicaciones, como c:\python\2.5\python.exeo c:\python\2.6\python.exe.

La otra alternativa es crear un acceso directo a la python.exellamada respectiva, una de ellas python25y la otra python26; entonces simplemente puede ejecutar python25en su línea de comando.

aodj
fuente
41
cómo crear ese acceso directo
Bilal Basharat
8
Cuando esté en Windows, navegue a la carpeta que contiene la versión de Python para la que desea crear un acceso directo, luego haga clic derecho y cree un acceso directo. Luego puede cambiarle el nombre.
aodj
3
Lamento desenterrar una publicación larga y muerta, pero ¿cómo hará que el acceso directo funcione sin requerir la extensión .lnk?
Nathan Tornquist
77
Si un acceso directo no funciona, puede hacer lo que dijo @FJ y simplemente copiar y cambiar el nombre. De lo contrario, puede hacer un enlace simbólico, usando '' mklink '' en la línea de comando.
aodj
77
¿No sería la mejor manera de crear un archivo bat llamado python25 y python26 y hacer que se llame la versión adecuada? Entonces todo lo que necesita hacer es poner esos 2 archivos bat junto a sus binarios.
Jeremy Cantrell
100

Agregar dos soluciones más al problema:

  • Use pylauncher (si tiene Python 3.3 o posterior, no es necesario instalarlo, ya que viene con Python) y agregue líneas shebang a sus scripts;

#! c:\[path to Python 2.5]\python.exe- para los scripts que desea ejecutar con Python 2.5
#! c:\[path to Python 2.6]\python.exe- para los scripts que desea ejecutar con Python 2.6

o en lugar de ejecutar el pythoncomando, ejecute el comando pylauncher ( py) especificando qué versión de Python desea;

py -2.6- versión 2.6
py -2- última versión instalada 2.x
py -3.4- versión 3.4
py -3- última versión instalada 3.x

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

por ejemplo

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

entonces puede activar el primero y trabajar con Python 2.5 de esta manera
c:\venvs\2.5\activate
y cuando quiera cambiar a Python 2.6, lo hará

deactivate  
c:\venvs\2.6\activate
Piotr Dobrogost
fuente
pylauncher parece ser una implementación prototipo de PEP 397 que fue aceptada como estándares Track en 2011. ¿Sabes por qué el lanzador todavía no se distribuye con Python para Windows o por qué todavía solo existe la implementación prototipo de Vinay Sajip?
Martineau
44
Pylauncher se distribuye con Python a partir de la versión 3.3; consulte python.org/download/releases/3.3.0 . También creo que la implementación de Vinay Sajip es la implementación no solo un prototipo.
Piotr Dobrogost el
1
Gracias por la aclaración. IMHO pylauncher también se debe distribuir como parte de la última versión de Python 2 porque las personas que usan esa versión son más propensas a las que desean instalar varias versiones (y es más probable que lo hagan si conocen su funcionalidad y disponibilidad).
Martineau
StackOverflow debería permitir múltiples votos a favor, ¡tu respuesta merece infinitos votos a favor! En serio, ¿dónde has estado hermano? : D Simple, claro y funcionando por supuesto!
3bdalla
Muy buenas sugerencias. Usé el segundo (virtualenv) uno. La única diferencia que encontré fue que tenía que incluir '\ scripts' en el camino para activar, por ejemplo: c:\venvs\2.5\scripts\activate. Esto está en Windows 10 si eso hace la diferencia. Aparte de eso, funciona como un encanto, gracias.
Dave Marley
53

A partir de Python 3.3, existe el iniciador oficial de Python para Windows ( http://www.python.org/dev/peps/pep-0397/ ). Ahora, puede usar el #!pythonXpara determinar la versión deseada del intérprete también en Windows. Vea más detalles en mi otro comentario o lea el PEP 397.

Resumen: Los py script.pylanzamientos de la versión de Python se indica en #!o Python 2 si #!no se encuentra. Los py -3 script.pylanzamientos de la Python 3.

pepr
fuente
1
Esta es la respuesta que estoy buscando. Ejecuto Windows 10 con Python 2.7 y Python 3.4.3. En el símbolo del sistema, escriba "py [número_versión_pthon_]", por ejemplo: py -3 o py invocará la versión de python que tenga. Creo que las variables de entorno deben establecerse antes de usar esto. Esto es conveniente para mí.
CodeMonkey
2
@Inuka: No es necesario establecer variables de entorno. El instalador de Python establece las asociaciones con la .pyextensión. El lanzador en sí está instalado en el C:\Windowsque ya está en el PATH. De esta manera, tampoco es PATHnecesario modificar la variable.
pepr
2
Muchas gracias por tu respuesta amigo. De esta manera también podemos invocar el pip. py -2 -m pip install SomePackage o py -3.4.3 -m pip install SomePackage
CodeMonkey
Creo que esta es la solución más simple y sin complicaciones.
prasad
46

Según @alexander, puede hacer un conjunto de enlaces simbólicos como a continuación. Póngalos en algún lugar que esté incluido en su camino para que se puedan invocar fácilmente

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe

Siempre que c: \ bin o donde sea que los haya colocado estén en su camino, ahora puede ir

> python25
Christopher Hackett
fuente
44
Idea inteligente. Por cierto, mklinksolo está disponible de forma nativa en Windows Vista / 2008 +. En XP y Server 2003, se podría crear un "enlace duro" usando fsutil hardlink create <new filename> <existing filename>y colocando o moviendo el <nuevo nombre de archivo> a algún lugar de su ruta. Sin embargo, los enlaces duros solo funcionan en el mismo disco.
Martineau
Esta es una buena solución, no estoy seguro de que funcione sin un sistema de archivos basado en NTFS también.
meawoppl
Sí, requiere soporte para enlaces simbólicos NTFS que creo que se introdujo en Vista (puedo estar equivocado). El uso en XP requiere el uso de un controlador diferente . Parece que se apagó en algún momento antes del lanzamiento general.
Christopher Hackett
la mejor solución más fácil
giantas
15
  1. instalar python

    • C: \ Python27
    • C: \ Python36
  2. Variable ambiental

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. renombrar archivo

    • C: \ Python27 \ python.exe → C: \ Python27 \ python2.exe
    • C: \ Python36 \ python.exe → C: \ Python36 \ python3.exe
  4. pepita

    • python2 -m pip install package
    • python3 -m pip install package
山 茶树 和 葡萄 树
fuente
Creo que, más o menos, esta es la solución práctica para la pregunta. Esto es más útil en comparación con el enfoque donde se usa el acceso directo / enlace simbólico para llamar al script de Python. En lugar de renombrar el archivo, podemos copiar y pegar el binario (python.exe) y luego cambiarle el nombre de acuerdo con su versión (como se muestra en esta respuesta). Por cierto, el pythoncomando sería confuso para el sistema operativo.
Testuser
¡Gran respuesta! Gracias ~ @ 山 茶树 和 葡萄 树
Bright Chang
14

Por ejemplo para el tipo de versión 3.6 py -3.6. Si también tiene versiones de 32 bits y 64 bits, simplemente puede escribir py -3.6-64o py -3.6-32.

Mehran Jalili
fuente
3
¡Esta debería ser la respuesta aceptada! ¡Gracias una tonelada!
Xonshiz
3
Esta es posiblemente la mejor respuesta, ya que no requiere cambiar el nombre de los archivos y los IDE de terceros detectarán ambos de manera normal.
Enchant97
¿podría mejorar la respuesta con más explicaciones? ¿Dónde está este pyejecutable? ¿Es una adición solo para Windows? ¿Es posible incorporar esto en un script de línea de comandos multiplataforma que tiene en la parte superior: #!/usr/bin/env python3por ejemplo?
Ed Randall
7

Cuando instala Python, no sobrescribirá otras instalaciones de otras versiones principales. Por lo tanto, la instalación de Python 2.5.x no sobrescribirá Python 2.6.x, aunque la instalación de 2.6.6 sobrescribirá 2.6.5.

Entonces puedes instalarlo. Luego llamas a la versión de Python que deseas. Por ejemplo:

C:\Python2.5\Python.exe

para Python 2.5 en Windows y

C:\Python2.6\Python.exe

para Python 2.6 en Windows, o

/usr/local/bin/python-2.5

o

/usr/local/bin/python-2.6

en Windows Unix (incluidos Linux y OS X).

Cuando instale en Unix (incluyendo Linux y OS X) obtendrá un pythoncomando genérico instalado, que será el último que instaló. Esto no es un problema, ya que la mayoría de los scripts llamarán explícitamente a /usr/local/bin/python2.5 o algo solo para protegerse contra eso. Pero si no quieres hacer eso, y probablemente no, puedes instalarlo así:

./configure
make
sudo make altinstall

Tenga en cuenta el "altinstall" que significa que lo instalará, pero no reemplazará el pythoncomando.

En Windows no obtienes un pythoncomando global hasta donde yo sé, así que eso no es un problema.

Lennart Regebro
fuente
gracias por ayuda de ure por favor responda mi segunda pregunta también: ¿cómo puedo ejecutar ambos a la vez? cuando cambié con éxito de 2.5 a 2.6
Bilal Basharat
@Bilal Basharat: Windows es un sistema operativo multitarea si desea ejecutar dos cosas al mismo tiempo, simplemente inicia ambas, por lo que no entiendo su pregunta.
Lennart Regebro
Actualmente estoy trabajando en Python2.5. simplemente explícame, ¿cómo puedo ejecutar 2.6 también? cuando escribo 'python' en el símbolo del sistema de Windows para ingresar al shell de Python, aparece python2.5. en la unidad c tenía ambas versiones instaladas. cuando voy a C: \ Python2.6 \ Python.exe. que python2.6 temporalmente activado. tan pronto como dejo C: \ Python2.6 \ nuevamente se convirtió en la versión 2.5
Bilal Basharat
3
@Bilal Basharat: ya respondí esto. No está "activado temporalmente". Ejecutó Python 2.6 con el comando C: \ Python2.6 \ Python.exe y así es como lo ejecuta. Y ejecuta Python 2.5 con el comando C: \ Python2.5 \ Python.exe. Así es como corres ambos al mismo tiempo.
Lennart Regebro
1
@Bilal Basharat: si el directorio C:\Python2.5o C:\Python2.6aparece en la PATHvariable de entorno, la versión correspondiente de Python se convertirá en la predeterminada a menos que la anule especificando explícitamente una ruta diferente al .exe que desea usar.
Martineau
5

Aquí hay un truco rápido:

  1. Vaya al directorio de la versión de Python que desea ejecutar.
  2. Haga clic derecho en python.exe
  3. Seleccione ' Crear acceso directo '
  4. Déle un nombre a ese acceso directo para llamar (uso p27, p33, etc.)
  5. Mueva ese acceso directo a su directorio de inicio ( C:\Users\Your name)
  6. Abra un símbolo del sistema e ingrese name_of_your_shortcut.lnk(uso p27.lnk)
David Greydanus
fuente
1

cp c: \ python27 \ bin \ python.exe como python2.7.exe

cp c: \ python34 \ bin \ python.exe como python3.4.exe

todos están en la ruta del sistema, elija la versión que desea ejecutar

C:\Users\username>python2.7
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users\username>python3.4
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
bruceyang
fuente
Esto funcionó para mí. Solo tengo que usar copy en lugar de cp. Además, cuando ejecute este comando, debe estar en algún lugar de la ruta y ambas instalaciones de Python, por ejemplo, c: \ python34 \ bin \ python.exe y c: \ python27 \ bin \ python.exe también deben estar en la ruta. (preferiblemente en ese orden).
Gregor Schmitz
1

Usando un archivo por lotes para cambiar, fácil y eficiente en Windows 7. Yo uso esto:

En el cuadro de diálogo variable de entorno (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe),

En la sección variables de usuario

  1. se agregó% pathpython% a la variable de entorno de ruta

  2. eliminó cualquier referencia a los parches de python

En la sección variables del sistema

  1. eliminó cualquier referencia a los parches de python

Creé archivos por lotes para cada instalación de Python (por ejemplo, 3.4 x64

Nombre = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) solo para recordar.

Contenido del archivo =

     Set PathPython=C:\Python36AMD64\Scripts\;C:\Python36AMD64\;C:\Tcl\bin

     setx PathPython %PathPython%

Para cambiar entre versiones, ejecuto el archivo por lotes en modo administrador.

!!!!! Los cambios son efectivos para las ventanas de símbolo del sistema SUBSIGUIENTE ABIERTAS. !!!

Así que tengo el control exacto sobre eso.

Un hombre
fuente
0

La forma más fácil de ejecutar múltiples versiones de Python en Windows se describe a continuación de la siguiente manera:

1) Descargue las últimas versiones de python desde python.org/downloads seleccionando la versión relevante para su sistema.

2) Ejecute el instalador y seleccione Agregar python 3.x a la ruta para establecer la ruta automáticamente en python 3 (solo tiene que hacer clic en la casilla de verificación). Para pitón 2 abierta hasta su instalador Python 2, seleccionar preferencias lo que desee, pero sólo recuerda al conjunto Agregar a python.exe camino a Se instalará en el disco duro local , ahora simplemente haga clic en Siguiente y espere a que el instalador a fin.

3) Cuando ambas instalaciones están completas. Haga clic derecho en mi computadora - Vaya a propiedades - Seleccione configuración avanzada del sistema - Vaya a variables de entorno - Haga clic en nuevo en Variables del sistema y agregue una nueva variable del sistema con el nombre de la variable como PY_PYTHON y establezca el valor de esta variable en 3 . Ahora haga clic en Aceptar y ya debería haber terminado.

4) Ahora para probar esto, abra el símbolo del sistema . Una vez que esté allí, escriba python o py , debería abrir python3 .

5) Ahora salga de python3 escribiendo exit () . Ahora escriba py -2 , debería abrir python 2.

Si nada de esto funciona, reinicie la computadora y si el problema persiste, desinstale todo y repita los pasos.

Gracias.

Harsh Singh
fuente
0

Puede crear diferentes entornos de desarrollo de Python gráficamente desde Anaconda Navigator. Tuve el mismo problema mientras trabajaba con diferentes versiones de Python, así que usé el navegador anaconda para crear diferentes entornos de desarrollo de Python y utilicé diferentes versiones de Python en cada entorno.

Aquí está la documentación de ayuda para esto.

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

mohitesachin217
fuente
-1

Con el Editor de entorno rápido , puede empujar hacia arriba el directorio de la instalación de Python deseada. Por ejemplo, para iniciar python desde el directorio c: \ Python27, asegúrese de que el directorio c: \ Python27 esté antes o encima del directorio c: \ Python36 en la variable de entorno Path. Desde mi experiencia, se está ejecutando el primer ejecutable de Python encontrado en el entorno Path. Por ejemplo, tengo instalado MSYS2 con Python27 y desde que agregué C: \ MSYS2 a la ruta antes de C: \ Python36, se está ejecutando python.exe desde la carpeta C: \ MSYS2 ....

Bogdan Oliver Stochin
fuente
-4

Simplemente llame al ejecutable correcto

albertov
fuente
Actualmente estoy trabajando en 2.5. simplemente explícame cómo puedo ejecutar 2.6 también. en el símbolo del sistema de Windows tuve que escribir 'python' para ingresar al shell de python. y es 2.5. en la unidad c tenía ambas versiones instaladas.
Bilal Basharat
En lugar de pythonentrar en el shell intente python2.5o python2.6. No soy un usuario de Windows, pero en UNIX / usr / bin / python es por lo general un alias para el ejecutable completo, estoy asumiendo Python en Windows está instalado en una manera similar
Albertov
1
En Windows, el nombre del ejecutable es siempre python.exe, pero cambia la ruta al ejecutable. Sin embargo, ya se ha explicado varias veces.
jgritty