Como executar várias versões do Python no Windows

170

Eu tinha duas versões do Python instaladas na minha máquina (versões 2.6 e 2.5). Eu quero executar 2.6 para um projeto e 2.5 para outro.

Como posso especificar qual eu quero usar?

Estou trabalhando no Windows XP SP2.

Bilal Basharat
fonte
3
Boas dicas para fazer perguntas é explicar o que você tentou e de que maneira isso falhou. Então: O que você tentou e de que maneira isso não funcionou?
Lennart Regebro
Observe que não consegui encontrar nenhuma pergunta anterior sobre isso no Windows, então mudei o título para refletir isso.
Lennart Regebro
Se você deseja executar 3.3 juntamente com 2,7, em seguida, este é o mais padronizado resposta: - stackoverflow.com/questions/15912063/...
Omar Tariq

Respostas:

135

Executar uma cópia diferente do Python é tão fácil quanto iniciar o executável correto. Você mencionou que iniciou uma instância python, na linha de comando, simplesmente digitando python.

O que isso faz no Windows é rastrear a %PATH%variável de ambiente, procurando por um executável, arquivo em lote ( .bat), arquivo de comando ( .cmd) ou algum outro executável a ser executado (isso é controlado pela PATHEXTvariável de ambiente), que corresponde ao nome fornecido. Quando encontra o arquivo correto para executar, o arquivo está sendo executado.

Agora, se você instalou duas versões python 2.5 e 2.6, o caminho terá os dois diretórios, algo como, PATH=c:\python\2.5;c:\python\2.6mas o Windows deixará de examinar o caminho quando encontrar uma correspondência.

O que você realmente precisa fazer é chamar explicitamente um ou ambos os aplicativos, como c:\python\2.5\python.exeou c:\python\2.6\python.exe.

A outra alternativa é criar um atalho para o respectivo python.exechamado, um deles python25e o outro python26; você pode simplesmente executar python25na sua linha de comando.

aodj
fonte
41
como criar esse atalho
Bilal Basharat
8
Quando estiver no Windows, navegue até a pasta que contém a versão python para a qual deseja criar um atalho, clique com o botão direito do mouse e crie o atalho. Você pode renomeá-lo.
aodj
3
Desculpe por desenterrar um post morto longo, mas como você fará o atalho funcionar sem exigir a extensão .lnk?
precisa
7
Se um atalho não funcionar, você pode fazer o que o @FJ disse e simplesmente copiar e renomear. Caso contrário, você pode criar um link simbólico usando '' mklink '' na linha de comando.
aodj
7
Não seria a melhor maneira de criar um arquivo bat chamado python25 e python26 e fazê-los chamar a versão apropriada? Então tudo o que você precisa fazer é colocar esses 2 arquivos bat ao lado dos binários.
Jeremy Cantrell
100

Adicionando mais duas soluções ao problema:

  • Use o pylauncher (se você possui o Python 3.3 ou mais recente, não há necessidade de instalá-lo, pois já vem com o Python) e adicione linhas shebang aos seus scripts;

#! c:\[path to Python 2.5]\python.exe- para scripts que você deseja executar com o Python 2.5
#! c:\[path to Python 2.6]\python.exe- para scripts que você deseja executar com o Python 2.6

ou, em vez de executar o pythoncomando, execute o comando pylauncher ( py) especificando qual versão do Python você deseja;

py -2.6- versão 2.6 - versão
py -2mais recente instalada 2.x
py -3.4- versão 3.4
py -3- versão mais recente 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 exemplo

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

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

então você pode ativar o primeiro e trabalhar com o Python 2.5 assim
c:\venvs\2.5\activate
e quando quiser mudar para o Python 2.6,

deactivate  
c:\venvs\2.6\activate
Piotr Dobrogost
fonte
O pylauncher parece ser uma implementação de protótipo do PEP 397, que foi aceita como trilha de padrões em 2011. Você sabe por que o lançador ainda não está sendo distribuído com o Python para Windows ou por que ainda existe apenas a implementação do protótipo de Vinay Sajip?
martineau
4
O Pylauncher está sendo distribuído com o Python a partir da versão 3.3 - veja python.org/download/releases/3.3.0 . Também acho que a implementação de Vinay Sajip não é apenas um protótipo.
Piotr Dobrogost
1
Obrigado pelo esclarecimento. O IMHO pylauncher também deve ser distribuído como parte da versão mais recente do Python 2 porque as pessoas que usam essa versão são mais propensas àquelas que desejam instalar várias versões (e mais propensas a fazê-lo se estiverem cientes de sua funcionalidade e disponibilidade).
22613 martineau
StackOverflow deve permitir vários upvotes, sua resposta merece infinitos upvotes! Sério, onde você esteve, mano! : D Simples, claro e funcionando, é claro!
3bdalla
Muito boas sugestões. Eu usei o segundo (virtualenv). A única diferença que eu encontrei foi que eu tinha que incluem '\ scripts' no caminho para ativar, por exemplo: c:\venvs\2.5\scripts\activate. Isso está no Windows 10, se isso faz diferença. Fora isso, funciona como um encanto, obrigado.
Dave Marley
53

A partir do Python 3.3, existe o iniciador oficial do Python para Windows ( http://www.python.org/dev/peps/pep-0397/ ). Agora, você pode usar o #!pythonXpara determinar a versão desejada do intérprete também no Windows. Veja mais detalhes no meu outro comentário ou leia o PEP 397.

Resumo: O py script.pylança a versão Python declarada em #!ou Python 2 se #!estiver ausente. O py -3 script.pylançamento do Python 3.

pepr
fonte
1
Esta é a resposta que estou procurando. Eu executo o Windows 10 com Python 2.7 e Python 3.4.3. No prompt de comando, digite "py [python_version_number]" ex: py -3 ou py chamará a versão python que você possui. Eu acho que as variáveis ​​de ambiente devem ser definidas antes de você usar isso. isso é conveniente para mim.
codemonkey
2
@ Inuka: Nenhuma variável de ambiente precisa ser definida. O instalador do Python define as associações com a .pyextensão. O iniciador em si está instalado no C:\Windowsque já está no PATH. Dessa forma, também a PATHvariável não precisa ser modificada.
pepr 14/03/16
2
Muito obrigado pela sua resposta, companheiro. Dessa maneira, podemos invocar o pip também. py -2 -m pip instalar SomePackage ou py -3.4.3 -m pip instalar SomePackage
codemonkey
Eu acho que essa é a solução mais simples e sem problemas.
Prasad
46

Conforme @alexander, você pode criar um conjunto de links simbólicos como abaixo. Coloque-os em algum lugar que esteja incluído no seu caminho para que possam ser facilmente chamados

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

Desde que c: \ bin ou onde quer que você os coloque esteja no seu caminho, agora você pode ir

> python25
Christopher Hackett
fonte
4
Ideia inteligente. BTW mklinkestá disponível apenas nativamente no Windows Vista / 2008 +. No XP e no Server 2003, um "hardlink" poderia ser criado usando fsutil hardlink create <new filename> <existing filename>e colocando ou movendo o <novo nome de arquivo> para algum lugar no seu caminho. No entanto, os hardlinks funcionam apenas na mesma unidade.
martineau
Esta é uma boa solução, não tenho certeza de que também funcione sem um sistema de arquivos baseado em NTFS.
precisa saber é
Sim, requer suporte para links simbólicos NTFS que, acredito, foram introduzidos no Vista (posso estar errado). O uso no XP requer o uso de um driver diferente . Parece que ele foi desligado em algum momento antes do lançamento geral.
Christopher Hackett
melhor solução mais fácil
giantas 28/12
15
  1. instalar python

    • C: \ Python27
    • C: \ Python36
  2. variável de ambiente

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. renomear arquivo

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

    • python2 -m pip install package
    • python3 -m pip install package
山 茶树 和 葡萄 树
fonte
Penso que, mais ou menos, esta é a solução prática para a pergunta. Isso é mais útil em comparação com a abordagem em que o atalho / link simbólico é usado para chamar o script python. Em vez de renomear o arquivo, podemos copiar e colar o binário (python.exe) e renomeá-lo de acordo com sua versão (como mostrado nesta resposta). A propósito, o pythoncomando seria confuso para o SO.
testuser
Ótima resposta! Obrigado ~ @ 山 茶树 和 葡萄
Bright Chang
14

Por exemplo, para o tipo de versão 3.6 py -3.6. Se você também possui versões de 32 e 64 bits, basta digitar py -3.6-64ou py -3.6-32.

Mehran Jalili
fonte
3
Esta deve ser a resposta aceita! Muito obrigado!
Xonshiz 29/10/19
3
Esta é possivelmente a melhor resposta, pois não requer renomeação de arquivos e IDEs de terceiros detectarão ambos como normal!
precisa saber é o seguinte
você poderia aprimorar a resposta com mais explicações - onde é esse pyexecutável - é uma adição apenas do Windows? É possível incorporar isso em um script de linha de comando de plataforma cruzada que tem no topo: #!/usr/bin/env python3por exemplo?
Ed Randall
7

Quando você instala o Python, ele não substitui outras instalações de outras versões principais. Portanto, a instalação do Python 2.5.x não substituirá o Python 2.6.x, embora a instalação do 2.6.6 substitua o 2.6.5.

Então você pode simplesmente instalá-lo. Então você chama a versão Python desejada. Por exemplo:

C:\Python2.5\Python.exe

para Python 2.5 no Windows e

C:\Python2.6\Python.exe

para Python 2.6 no Windows ou

/usr/local/bin/python-2.5

ou

/usr/local/bin/python-2.6

no Windows Unix (incluindo Linux e OS X).

Quando você instala no Unix (incluindo Linux e OS X), você recebe um pythoncomando genérico instalado, que será o último que você instalou. Isso geralmente não é um problema, pois a maioria dos scripts chama explicitamente /usr/local/bin/python2.5 ou algo apenas para se proteger. Mas se você não quiser fazer isso, e provavelmente não, poderá instalá-lo assim:

./configure
make
sudo make altinstall

Observe o "altinstall" que significa que o instalará, mas não substituirá o pythoncomando.

No Windows, você não recebe um pythoncomando global , pelo que sei, o que não é um problema.

Lennart Regebro
fonte
obrigado pela ajuda do ure, responda minha segunda pergunta também: como posso executar os dois de cada vez? como eu comutada com sucesso 2,5-2,6
Bilal Basharat
@Bilal Basharat: O Windows é um sistema operacional multitarefa, se você deseja executar duas coisas ao mesmo tempo, basta iniciar as duas, para que eu não entenda sua pergunta.
Lennart Regebro 03/01
Atualmente, estou trabalhando em python2.5. simplesmente me elabore como posso executar o 2.6 também? Quando eu escrevo 'python' no prompt de comando do Windows para inserir shell python do que python2.5 aparece. na unidade c, eu tinha as duas versões instaladas. quando eu vou para C: \ Python2.6 \ Python.exe. do que python2.6 ativado temporariamente. assim que eu deixo C: \ python2.6 \-lo novamente transformado em versão 2.5
Bilal Basharat
3
@Bilal Basharat: Eu já respondi isso. Não está "temporariamente ativado". Você executou o Python 2.6 com o comando C: \ Python2.6 \ Python.exe e é assim que você o executa. E você executa o Python 2.5 com o comando C: \ Python2.5 \ Python.exe. É assim que você executa os dois ao mesmo tempo.
Lennart Regebro
1
@Bilal Basharat: Se o diretório C:\Python2.5ou C:\Python2.6aparecer em sua PATHvariável de ambiente, a versão correspondente do Python se tornará o padrão, a menos que você o substitua, especificando explicitamente um caminho diferente para o .exe que você deseja usar.
22680 martineau
7

Eu recomendo fortemente o projeto pyenv-win .

insira a descrição da imagem aqui

Graças ao trabalho de kirankotari , agora temos uma versão para Windows do pyenv.

Xin Lv
fonte
5

Aqui está um hack rápido:

  1. Vá para o diretório da versão do python que você deseja executar
  2. Clique com o botão direito do mouse em python.exe
  3. Selecione ' Criar atalho '
  4. Atribua um nome a esse atalho (eu uso p27, p33 etc.)
  5. Mova esse atalho para o diretório inicial (C:\Users\Your name )
  6. Abra um prompt de comando e digite name_of_your_shortcut.lnk(eu uso p27.lnk)
David Greydanus
fonte
1

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

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

eles estão todos no caminho do sistema, escolha a versão que você deseja executar

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
fonte
isso funcionou para mim. Só tem que usar cópia em vez de cp. Além disso, ao executar este comando, você deve estar em algum lugar do caminho e as instalações do python, por exemplo, c: \ python34 \ bin \ python.exe e c: \ python27 \ bin \ python.exe também precisam estar no caminho. (de preferência nessa ordem).
22717 Gregor Schmitz
1

Usando um arquivo em lotes para alternar, fácil e eficiente no Windows 7. Eu uso isso:

Na caixa de diálogo da variável de ambiente (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe),

Na seção variáveis ​​de usuário

  1. % pathpython% adicionado à variável de ambiente do caminho

  2. removeu quaisquer referências a patches de python

Na seção variáveis ​​de sistema

  1. removeu quaisquer referências a patches de python

Criei arquivos em lote para todas as instalações python (exemplo: 3,4 x64

Nome = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) apenas para lembrar.

Conteúdo do arquivo =

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

     setx PathPython %PathPython%

Para alternar entre versões, eu executo o arquivo em lotes no modo de administrador.

!!!!! As alterações são efetivas para as janelas do prompt de comando SUBSEQUENT OPENED. !!!

Então, eu tenho controle exato sobre isso.

Um homem
fonte
0

A maneira mais fácil de executar várias versões do python no Windows é descrita abaixo:

1) Faça o download das versões mais recentes do python em python.org/downloads , selecionando a versão relevante para o seu sistema.

2) Execute o instalador e selecione Adicionar python 3.x ao caminho para definir o caminho automaticamente no python 3 (basta clicar na caixa de seleção). Para o python 2, abra o instalador do python 2, selecione as preferências desejadas, mas lembre-se de definir Add python.exe no caminho para Será instalado no disco rígido local . Agora, clique em Avançar e aguarde o instalador terminar.

3) Quando as duas instalações estiverem completas. Clique com o botão direito do mouse no meu computador - Vá para propriedades - Selecione configurações avançadas do sistema - Vá para variáveis ​​de ambiente - Clique em novo em Variáveis ​​do sistema e adicione uma nova variável do sistema com o nome da variável como PY_PYTHON e defina esse valor da variável como 3 . Agora clique em OK e você deve terminar.

4) Agora, para testar isso, abra o prompt de comando . Quando você estiver lá, digite python ou py , ele deve abrir o python3 .

5) Agora saia do python3 digitando exit () . Agora digite py -2 ele deve abrir o python 2.

Se nada disso funcionar, reinicie o computador e, se o problema persistir, desinstale tudo e repita as etapas.

Obrigado.

Harsh Singh
fonte
0

Você pode criar diferentes ambientes de desenvolvimento python graficamente a partir do Anaconda Navigator. Como tive o mesmo problema ao trabalhar com diferentes versões de python, usei o anaconda navigator para criar diferentes ambientes de desenvolvimento de python e usei diferentes versões de python em cada ambiente.

Aqui está a documentação de ajuda para isso.

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

mohitesachin217
fonte
-1

Usando o Rapid Environment Editor, você pode empurrar para o topo o diretório da instalação desejada do Python. Por exemplo, para iniciar o python a partir do diretório c: \ Python27, verifique se o diretório c: \ Python27 está antes ou acima do diretório c: \ Python36 na variável de ambiente Path. Pela minha experiência, o primeiro executável python encontrado no ambiente Path está sendo executado. Por exemplo, eu tenho o MSYS2 instalado com o Python27 e desde que adicionei C: \ MSYS2 ao caminho anterior a C: \ Python36, o python.exe da pasta C: \ MSYS2 .... está sendo executado.

Bogdan Oliver Stochin
fonte
-4

Basta chamar o executável correto

albertov
fonte
Atualmente estou trabalhando no 2.5. simplesmente me elabore como posso executar o 2.6 também. no prompt de comando do windows, tive que escrever 'python' para entrar no shell python. e é 2.5. na unidade c, eu tinha as duas versões instaladas.
Bilal Basharat
Em vez de pythonentrar no shell, tente python2.5ou python2.6. Eu não sou um usuário do Windows, mas em unix / usr / bin / python é geralmente um alias para o executável totalmente qualificado, estou assumindo python no Windows está instalado de forma semelhante
Albertov
1
No Windows, o nome do executável é sempre python.exe, mas você altera o caminho para o executável. Já foi explicado várias vezes.
jgritty