Como instalar o Python 2.xe o Python 3.x no Windows

230

Eu faço a maior parte da minha programação no Python 3.x no Windows 7, mas agora preciso usar a PIL (Imaging Library), o ImageMagick e o wxPython, que exigem o Python 2.x.

Posso ter o Python 2.xe o Python 3.x instalados no Windows 7? Quando executo um script, como "escolho" qual versão do Python deve executá-lo? Os programas mencionados acima poderão lidar com várias versões do Python instaladas ao mesmo tempo? Eu pesquisei por horas e horas sobre como fazer isso sem sucesso.

Obrigado.

dln385
fonte
2
Sim, como @NickT diz, isso é mais fácil. Infelizmente, nenhuma das respostas abaixo fornece uma abordagem simples e direta. (Os que mencionam a versão 3.3 são os mais próximos.) Para obter uma resposta melhor, consulte a resposta aceita na pergunta duplicada: stackoverflow.com/a/17245543/1593924 Em poucas palavras, use o novo iniciador "py", com ou sem um -3 parâmetro. E considere adicionar shebangs (#!) Aos seus scripts para não precisar de um parâmetro.
Jon Coombs
1
Além disso, alguns encontraram os detalhes que eu postei aqui útil: stackoverflow.com/a/13533958/1593924
Jon Coombs

Respostas:

150

Eu descobri que a maneira formal de fazer isso é a seguinte:

Basta instalar duas (ou mais, usando os instaladores) versões do Python no Windows 7 (para mim, trabalho com 3.3 e 2.7).

Siga as instruções abaixo, alterando os parâmetros para suas necessidades.

Crie a seguinte variável de ambiente (por padrão, clique duas vezes):

Name:  PY_PYTHON
Value: 3

Para iniciar um script em um intérprete específico, adicione o seguinte shebang (início do script):

#! python2

Para executar um script usando um intérprete específico, use o seguinte comando:

> py -2 MyScript.py

Para iniciar um intérprete específico:

> py -2

Para iniciar o intérprete padrão (definido pela variável PY_PYTHON):

> py

Recursos

Documentação: Usando Python no Windows

PEP 397 - lançador Python para Windows

Pedro Vagner
fonte
8
Além disso, para usar o easy_install ou o pip nas duas versões, altere o caminho a incluir c:\python35;c:\python35\scripts;c:\python27\scripts;. Isso permite o uso de pip2/ pip3, e easy_install-2.7/ em easy_install-3.5vez de pipe easy_install.
Rdtsc
1
Não funcionará com vários programas que não entregam seu próprio Python e insistem em usar a versão do sistema, e não respeitam o iniciador.
Jonathan Baldwin
1
Não, não adicione nenhum Python ao caminho. Use py -m pip install .... Adicione os switches depois pypara escolher em qual Python executar o pip, conforme acima.
precisa saber é o seguinte
75

O que eu fiz foi baixar tanto o 2.7.6 quanto o 3.3.4. O Python 3.3.4 tem a opção de adicionar o caminho a ele na variável de ambiente para que isso tenha sido feito. Então, basicamente, eu apenas adicionei manualmente o Python 2.7.6.

Como...

  1. Iniciar> no tipo de pesquisa no ambiente, selecione "Editar variáveis ​​de ambiente na sua conta" 1

  2. Role para baixo até Caminho, selecione o caminho, clique em editar.

  3. Adicione C: \ Python27; então você deve ter caminhos para as duas versões do Python, mas se não o fizer, poderá editá-lo facilmente para fazer isso ..... C: \ Python27; C: \ Python33;

  4. Navegue para a pasta Python27 em C: \ e renomeie uma cópia do python.exe para python2.exe

  5. Navegue para a pasta Python34 em C: \ e renomeie uma cópia do python.exe para python3.exe

  6. Teste: abra o prompt de comando e digite python2 .... BOOM! Python 2.7.6. sair.

  7. Teste: abra o prompt de comando e digite python3 .... BOOM! Python 3.4.3. sair.

Nota: (para não quebrar os comandos pip nas etapas 4 e 5, mantenha a cópia do python.exe no mesmo diretório que o arquivo renomeado)

user3458330
fonte
43
Isso quebrará o pip2 e o pip3! Não substitua python, copie-o e renomeie o segundo arquivo para python2 / python3.
Brunofitas
1
apenas uma palavra de cautela, não consegui desinstalar o python até reverter os nomes. Meu conselho é fazer cópias e renomeá-las, mas deixe os arquivos python.exe originais em paz **, como também mencionado por bruno.
precisa
2
Você poderia processar o feedback dos brunofitas na resposta?
030
Sim, acabei de renomear o python.exe na instalação do Python3 para python3.exe. Eu acho que isso acontece automaticamente com python em um ambiente * nix. Claro que não existem arquivos .exe, mas há um programa python2 e python3. :)
user3870315
Se você tem uma biblioteca / plugin que depende tanto a versão de python, certifique-se que a versão vem em primeiro lugar em sua variável de ambiente PATH
aphoe
51

Eu tenho várias versões no Windows. Acabei de alterar o nome exe da versão que não estou usando como padrão.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

Quanto aos instaladores de pacotes, a maioria dos instaladores exe permite escolher a instalação do python para adicionar o pacote também. Para instalação manual, verifique a opção --prefix para definir onde o pacote deve ser instalado:

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

monkut
fonte
Isso funcionou. Antes de fazer essa alteração, quando tentei executar um programa no Python 2.7, ele ainda funcionava no Python 3.1 (talvez porque o Windows 7 não possa lidar com dois programas diferentes com o mesmo nome). Depois de renomear o exe, como mostrado, tudo correu bem.
precisa saber é o seguinte
4
@ dln385: Se respondeu à sua pergunta, você deve aceitá-la clicando na marca de seleção.
Dappawit 6/03/11
1
Isso funcionou para mim também. Eu tive um conflito entre o Python 2.7 e o Python 3.2. Como eu instalei o Python 3.2 primeiro (e defini-lo adequadamente como uma variável ambiental), não consegui acessar o Python 2.7 no prompt (em vez disso, obtive o Python 3.2). Como eu queria usar o Python 2.7 padrão, portanto, alterei o python.exe para python3.2.exe e mantive o python.exe do Python 2.7 inalterado. Isso fez o truque.
Robert Smith
Não instalei um novo python3 no Windows por um tempo, mas a versão que eu tenho inclui o pip como pip3e pip3.4. (também inclui como pip, mas acho que excluir isso deve resolver qualquer conflito com python2). Na verdade eu não tenho C:\Python34\Scriptsno meu Path, então eu não tive quaisquer problemas relacionados pip ...
monkut
30

Se você usa o Anaconda Python, pode instalar facilmente vários ambientes.

Digamos que você tivesse o Anaconda Python 2.7 instalado e desejasse um ambiente python 3.4:

conda create -n py34 python=3.4 anaconda

Em seguida, para ativar o ambiente:

activate py34

E para desativar:

deactivate py34

(Com Linux, você deve usar source activate py34.)

Ligações:

Baixar Anaconda Python

Instruções para ambientes

philshem
fonte
O IMO conda é de longe a melhor maneira de mexer com diferentes instalações do Python. Eu errei muitas coisas antes de me mudar para Anaconda.
Jrinker
11

Para instalar e executar qualquer versão do Python no mesmo sistema, siga o meu guia abaixo.


Por exemplo, digamos que você queira instalar o Python 2.xe o Python 3.x no mesmo sistema Windows.

  1. Instale os dois lançamentos binários em qualquer lugar que desejar.

    • Quando solicitado, não registre suas extensões de arquivo e
    • não os adicione automaticamente à variável de ambiente PATH
  2. Executando simplesmente o comando, pythono executável encontrado pela primeira vez no PATH será escolhido para o lançamento. Em outras palavras, adicione os diretórios Python manualmente. O que você adicionar primeiro será selecionado quando você digitar python. Os programas python consecutivos (ordem crescente em que seus diretórios são colocados no PATH) serão escolhidos da seguinte maneira:

    • py -2 para o segundo python
    • py -3 para o terceiro pythonetc.
  3. Não importa a ordem dos "pitões", você pode:

    • execute scripts Python 2.x usando o comando: py -2 (funcionalidade Python 3.x) (ou seja, o primeiro programa de instalação do Python 2.x encontrado em seu PATH será selecionado)
    • execute scripts Python 3.x usando o comando: ou py -3 (ou seja, o primeiro programa de instalação do Python 3.x encontrado em seu PATH será selecionado)

No meu exemplo, eu tenho o Python 2.7.14 instalado primeiro e o Python 3.5.3. É assim que minha variável PATH começa com:

PATH = C: \ Arquivos de programas \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Arquivos de programas \ Python_3.6 \ Scripts \; C: \ Arquivos de programas \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Arquivos de Programas (x86) \ Arquivos Comuns \ Intel \ Compartilhado

...

Observe que o Python 2.7 é o primeiro e o Python 3.5, o segundo.

  • Portanto, o pythoncomando running executará o python 2.7 (se o Python 3.5, o mesmo comando iniciaria o Python 3.5).
  • A execução py -2inicia o Python 2.7 (porque acontece que o segundo Python é o Python 3.5, o qual é incompatível py -2). A execução py -3inicia o Python 3.5 (porque é o Python 3.x)
  • Se você tivesse outra python mais tarde, em seu caminho que você iria lançar assim: py -4. Isso pode mudar se / quando o Python versão 4 for lançado.

Agora py -4ou py -5etc. nas saídas do meu sistema: Requested Python version (4) not installedou Requested Python version (5) not installedetc.

Espero que isso esteja claro o suficiente.

Nikos
fonte
Como você pode especificar uma instalação de pip em um dos discos Python?
Víctor Martínez
Para o primeiro python encontrado, basta digitar pip. Para qualquer outro python instalado, você deve especificar manualmente o caminho, ie. C:\Python27\Scripts\pip.py [parameters]. (Claro que, como um atalho, você pode colocar qualquer exe que você quer em uma variável de ambiente.)
Nikos
@ Nik-Lz que comando "py -2" é esse ao qual você está se referindo? Eu não parecem ter estes em minhas janelas 7.
Janos
2
É exatamente assim que o python deve ser usado no Windows no caso de várias versões.
getName
8

A partir da versão 3.3 A versão do Windows possui o iniciador Python, consulte a seção 3.4. Iniciador do Python para Windows

Dmitry Sobolev
fonte
8

Aqui está o que você pode fazer:

Instale o cmder . Abra e use o Cmder como faria com o terminal cmd. Use o alias de comando para criar alias de comando.

Eu fiz o seguinte:

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

E é isso! ;-)

user402429
fonte
6
set-alias python2 c:\python27\python.exe
Profeta Daniel
Use set-alias como exemplo show se estiver usando o Powershell. Nesse caso, não seria necessário instalar o Cmder.
Profeta Daniel
@ProphetDaniel Isso deve ser publicado como uma resposta separada. Responde totalmente à pergunta original.
Dr_Zaszuś 29/07/19
7

Na verdade, eu apenas pensei em uma solução interessante. Embora o Windows não permita que você aliasse programas com facilidade, você pode criar arquivos em lotes renomeados que chamarão o programa atual.

Em vez de renomear o executável, que quebrará muitas coisas, incluindo pip, crie o arquivo python2.bat no mesmo diretório que o python2.exe. Em seguida, adicione a seguinte linha:

%~dp0python %*

O que significa essa sintaxe arcaica? Bem, é um script em lote (versão do Windows do bash). % ~ dp0 obtém o diretório atual e% * apenas passa todos os argumentos para python que foram passados ​​para o script.

Repita o procedimento para python3.bat

Você também pode fazer o mesmo com o pip e outros utilitários, basta substituir a palavra python no arquivo por pip ou qualquer que seja o nome do arquivo. O alias será o nome do arquivo.

O melhor de tudo é que, quando adicionado ao PATH, o Windows ignora a extensão, executando assim

python3

Inicia a versão python3 e o comando python2 inicia a versão python2.

BTW, esta é a mesma técnica que o Spyder usa para se adicionar ao caminho no Windows. :)

Skylion
fonte
1
Solução impressionante sem modificar arquivos python existentes.
Om Prakash
3

Você pode instalar várias versões do Python em uma máquina e, durante a instalação, pode optar por associar um deles às extensões de arquivo do Python. Se você instalar módulos, haverá pacotes de instalação diferentes para versões diferentes ou você poderá escolher qual versão deseja segmentar. Como eles geralmente se instalam no diretório de pacotes do site da versão do interpretador, não deve haver nenhum conflito (mas eu não testei isso). Para escolher qual versão do python, você teria que especificar manualmente o caminho para o intérprete, se este não for o padrão. Tanto quanto eu sei, eles compartilhariam as mesmas variáveis ​​PATH e PYTHONPATH, o que pode ser um problema.

Nota: Eu executo o Windows XP. Não tenho idéia se algo disso muda para outras versões, mas não vejo nenhuma razão para isso.

li.davidm
fonte
3
Eu tenho o python 2.5, 2.6 e 3.1 todos instalados simultaneamente. Nunca me ocorreu que eu poderia ter que fazer algo mais difícil do que apenas executar todos os instaladores para cada versão que eu preciso.
SingleNegationElimination
3

O que fiz no meu próprio computador com Windows, onde tenho o Python 2.7 e o Python 3.4 instalado, foi que escrevi um arquivo .bat simples no mesmo diretório dos meus arquivos Python.exe. Eles parecem algo como,

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

O% * permite adicionar argumentos (arquivos Python) posteriormente. Eu acredito que / k mantém o prompt aberto depois que ele termina de executar o script. Em seguida, salvei como python27.bat. Depois, vou para o diretório Python 3 e faço um arquivo bat lá. Agora na minha linha de comando eu posso escrever

Python27 helloworld.py

Ou

Python34 helloworld.py

E eles serão executados em suas respectivas versões do Python. Verifique se c: \ python27 e c: \ python34 estão em suas variáveis ​​de ambiente.

Eu tenho minha resposta daqui

Bryan Kimani
fonte
2

Fiz isso em três etapas, seguindo as instruções aqui: Tudo isso é obtido diretamente daqui: http://ipython.readthedocs.io/en/stable/install/kernel_install.html . Atualmente, estou executando o Python 2.x no Windows 8 e tenho o Anaconda 4.2.13 instalado.

1) Primeiro instale a versão mais recente do python:

conda create -n python3 python=3 ipykernel

2) Próximo ativar python3

activate python3

3) Instale o kernel:

python -m ipykernel install --user

Se você possui o Python 3 instalado e deseja instalar 2, alterne os 2 e os 3 acima. Quando você abre um novo notebook, agora pode escolher entre Python 2 ou 3.

Moiz Kapadia
fonte
1

Verifique as variáveis ​​de ambiente do sistema após a instalação do Python, os diretórios do python 3 devem estar primeiro na sua variável PATH, depois no python 2.

Qualquer variável de caminho que corresponda primeiro é a que o Windows usa.

Como sempre, o py -2 iniciará o python2 nesse cenário.

Spitfire19
fonte
1

Eu mesmo encontrei esse problema e criei meus lançadores em um .bat para que você pudesse escolher a versão que deseja iniciar.

O único problema é que o arquivo .py deve estar na pasta python, mas, de qualquer maneira, aqui está o 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

Salve-os como .bat e siga as instruções.

KinDa
fonte
0

Instale o que você mais usa (3,3 no meu caso) por cima do outro. Isso forçará o IDLE a usar o que você deseja.

Como alternativa (do README do python3.3):

Instalando Várias Versões

Nos sistemas Unix e Mac, se você pretende instalar várias versões do Python usando o mesmo prefixo de instalação (argumento --prefix para o script configure), certifique-se de que o executável principal do python não seja sobrescrito pela instalação de uma versão diferente. Todos os arquivos e diretórios instalados usando o "make altinstall" contêm as versões principal e secundária e, portanto, podem viver lado a lado. "make install" também cria $ {prefix} / bin / python3, que se refere a $ {prefix} /bin/pythonX.Y. Se você pretende instalar várias versões usando o mesmo prefixo, você deve decidir qual versão (se houver) é a sua versão "primária". Instale essa versão usando "make install". Instale todas as outras versões usando "make altinstall".

Por exemplo, se você deseja instalar o Python 2.6, 2.7 e 3.3, sendo 2.7 a versão principal, execute "make install" no diretório de compilação 2.7 e "make altinstall" nos outros.

abudhabikid
fonte
0

Eu apenas tive que instalá-los. Em seguida, usei o software gratuito (e portátil) em http://defaultprogramseditor.com/ em "Configurações do tipo de arquivo" / "Menu de contexto" / pesquisa: "py", escolhi o arquivo .py e adicionei um comando 'aberto' para o arquivo 2 IDLE copiando o comando existente denominado 'open with IDLE, alterando nomes para IDLE 3.4.1 / 2.7.8 e substituindo os números dos arquivos de suas respectivas versões no caminho do programa. Agora, basta clicar com o botão direito do mouse no arquivo .py e escolher qual IDLE quero usar. Pode fazer o mesmo com intérpretes diretos, se você preferir.

wheya
fonte
-1

Funciona apenas se você estiver executando seu código no seu Python IDE

Eu tenho o Python 2.7 e o Python 3.3 instalados no meu sistema operacional Windows. Se eu tentar iniciar um arquivo, ele geralmente será aberto no python 2.7 IDE. Como resolvi esse problema, foi quando escolhi executar meu código no python 3.3, abro o python 3.3 IDLE (Python GUI), seleciono o arquivo, abro o meu arquivo com o IDLE e salve-o. Então, quando executo meu código, ele é executado no IDLE que eu o abri no momento. Funciona vice-versa com 2.7.

user3295433
fonte
-1

Eu instalei o python 2.7.13 e o python 3.6.1 no windows 10pro e estava recebendo o mesmo "erro fatal" quando tentei o pip2 ou o pip3.

O que fiz para corrigir isso foi ir para o local do python.exe nos arquivos python 2 e python 3 e criar uma cópia de cada um. Em seguida, renomeei cada cópia para python2.exe e python3.exe, dependendo da versão do python no diretório pasta de instalação. Portanto, eu tinha em cada pasta de instalação do python um arquivo python.exe e um python2.exe ou python3.exe, dependendo da versão do python.

Isso resolveu meu problema quando eu digitei pip2 ou pip3.

eddy onyango
fonte
-2

Se você não conseguir que mais nada funcione, abra um intérprete na versão que você escolher (eu prefiro usar o iPython) e:

import subprocess

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

Isso usa a versão python em que você está operando atualmente. Funciona bem para um único script, mas rapidamente fica fora de controle se houver muitos scripts executados; nesse caso, você sempre pode criar um arquivo em lotes com todas essas chamadas internas. Não é a resposta mais elegante, mas funciona.

Existe uma maneira de criar aliases para diferentes versões de python no Linux?

user2796022
fonte