Come installare sia Python 2.xe Python 3.x in Windows


230

Faccio la maggior parte della mia programmazione in Python 3.x su Windows 7, ma ora devo utilizzare Python Imaging Library (PIL), ImageMagick e wxPython, che richiedono tutti Python 2.x.

Posso avere sia Python 2.xe Python 3.x installati in Windows 7? Quando eseguo uno script, come dovrei "scegliere" quale versione di Python dovrebbe eseguirlo? I suddetti programmi saranno in grado di gestire più versioni di Python installate contemporaneamente? Ho cercato per ore e ore come farlo senza alcun risultato.

Grazie.



2
Sì, come dice @NickT, è più semplice. Sfortunatamente, nessuna delle risposte di seguito fornisce un approccio semplice e diretto. (Quelle che menzionano la versione 3.3 si avvicinano.) Per una risposta migliore, vedi quella accettata sotto la domanda duplicata: stackoverflow.com/a/17245543/1593924 In poche parole, usa il nuovo lanciatore "py", con o senza un -3 parametro. E considera l'aggiunta di shebang (#!) Ai tuoi script in modo da non avere bisogno di un parametro.
Jon Coombs,

1
Inoltre, alcuni hanno trovato utili i dettagli che ho pubblicato qui: stackoverflow.com/a/13533958/1593924
Jon Coombs,

Risposte:


150

Ho scoperto che il modo formale per farlo è il seguente:

Basta installare due (o più, usando i loro programmi di installazione) versioni di Python su Windows 7 (per me lavoro con 3.3 e 2.7).

Seguire le istruzioni di seguito, modificando i parametri per le proprie esigenze.

Creare la seguente variabile di ambiente (per impostazione predefinita al doppio clic):

Name:  PY_PYTHON
Value: 3

Per avviare uno script in un interprete specifico, aggiungi il seguente shebang (inizio dello script):

#! python2

Per eseguire uno script utilizzando un interprete specifico, utilizzare il comando seguente:

> py -2 MyScript.py

Per avviare un interprete specifico:

> py -2

Per avviare l'interprete predefinito (definito dalla variabile PY_PYTHON):

> py

risorse

Documentazione: utilizzo di Python su Windows

PEP 397 - Launcher Python per Windows


8
Inoltre, per utilizzare easy_install o pip con entrambe le versioni, modificare il percorso da includere c:\python35;c:\python35\scripts;c:\python27\scripts;. Ciò consente l'uso di pip2/ pip3, e easy_install-2.7/ easy_install-3.5invece di pipe easy_install.
rdtsc,

1
Non funzionerà con vari programmi che non distribuiscono il proprio Python e insistono sull'uso della versione del sistema e non rispettano il programma di avvio.
Jonathan Baldwin,

1
No, non aggiungere alcun Python al percorso. Usa py -m pip install .... Aggiungi gli switch dopo pyper scegliere in quale Python eseguire pip come sopra.
Mark Tolonen,

75

Quello che ho fatto è stato scaricare sia 2.7.6 che 3.3.4. Python 3.3.4 ha la possibilità di aggiungere il percorso ad esso nella variabile d'ambiente in modo da farlo. Quindi in pratica ho appena aggiunto manualmente Python 2.7.6.

Come...

  1. Inizia> nel tipo di ricerca in ambiente selezionare "Modifica variabili di ambiente nell'account" 1

  2. Scorri verso il basso fino a Percorso, seleziona percorso, fai clic su Modifica.

  3. Aggiungi C: \ Python27; quindi dovresti avere i percorsi per entrambe le versioni di Python lì, ma se non lo fai puoi facilmente modificarlo in modo da farlo ..... C: \ Python27; C: \ Python33;

  4. Passare alla cartella Python27 in C: \ e rinominare una copia di python.exe in python2.exe

  5. Passare alla cartella Python34 in C: \ e rinominare una copia di python.exe in python3.exe

  6. Test: apri il prompt dei comandi e digita python2 .... BOOM! Python 2.7.6. uscire.

  7. Test: apri il prompt dei comandi e digita python3 .... BOOM! Python 3.4.3. uscire.

Nota: (per non interrompere i comandi pip nei passaggi 4 e 5, conservare la copia di python.exe nella stessa directory del file rinominato)


43
Questo romperà sia pip2 che pip3! Non sostituire python, copiarlo e rinominare il secondo file in python2 / python3.
Brunofitas,

1
solo un avvertimento, non sono stato in grado di disinstallare Python fino a quando non ho ripristinato i nomi. Il mio consiglio è di fare copie e rinominare quelle ma lasciare i file python.exe originali da soli ** come menzionato anche da bruno.
Logica 1

2
Potresti elaborare il feedback brunofitas nella risposta?
030

Sì, ho appena rinominato python.exe nell'installazione di Python3 in python3.exe. Penso che ciò avvenga automaticamente con Python in un ambiente * nix. Ovviamente non ci sono file .exe ma esiste un programma python2 e python3. :)
user3870315,

Se hai una libreria / plugin che dipende da entrambe le versioni di Python, assicurati che la versione sia la prima nella variabile di ambiente PATH
aphoe

51

Ho più versioni in Windows. Ho appena cambiato il nome exe della versione che non sto impostando.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

Per quanto riguarda i programmi di installazione dei pacchetti, la maggior parte dei programmi di installazione exe consente di scegliere l'installazione di Python per aggiungere anche il pacchetto. Per l'installazione manuale, controlla l'opzione --prefix per definire dove installare il pacchetto:

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


Questo ha funzionato. Prima di apportare questa modifica, quando ho provato a eseguire un programma in Python 2.7, è stato comunque eseguito in Python 3.1 (forse perché Windows 7 non è in grado di gestire due programmi diversi con lo stesso nome). Dopo aver rinominato l'exe come mostrato, tutto è andato bene.
dln385,

4
@ dln385: se ha risposto alla tua domanda, dovresti accettarla facendo clic sul segno di spunta.
dappawit,

1
Questo ha funzionato anche per me. Ho avuto un conflitto tra Python 2.7 e Python 3.2. Dato che avevo installato Python 3.2 per primo (e impostato in modo appropriato come variabile ambientale), non potevo accedere a Python 2.7 nel prompt (invece, ho ottenuto Python 3.2). Volevo usare come predefinito Python 2.7, quindi ho cambiato python.exe in python3.2.exe e ho mantenuto invariato il python.exe di Python 2.7. Questo ha funzionato.
Robert Smith,

Non ho installato un nuovo python3 su Windows da un po 'di tempo, ma la versione che ho include pip as pip3e pip3.4. (lo include anche come pip, ma penso che la cancellazione dovrebbe risolvere eventuali conflitti con python2). In realtà non ho C:\Python34\Scriptsnel mio Path, quindi non ho avuto problemi relativi al pip ...
monkut

30

Se si utilizza Anaconda Python, è possibile installare facilmente vari ambienti.

Supponiamo che tu abbia installato Anaconda Python 2.7 e che volessi un ambiente Python 3.4:

conda create -n py34 python=3.4 anaconda

Quindi per attivare l'ambiente:

activate py34

E per disattivare:

deactivate py34

(Con Linux, dovresti usare source activate py34 .)

link:

Scarica Anaconda Python

Istruzioni per gli ambienti


Il conda IMO è di gran lunga il modo migliore per pasticciare con diverse installazioni di Python. Ho rovinato tante cose prima di trasferirmi ad Anaconda.
jrinker,

11

Per installare ed eseguire qualsiasi versione di Python nello stesso sistema, segui la mia guida di seguito.


Ad esempio, supponiamo che tu voglia installare Python 2.xe Python 3.x sullo stesso sistema Windows.

  1. Installa entrambe le versioni binarie dove vuoi.

    • Quando richiesto, non registrare le loro estensioni di file e
    • non aggiungerli automaticamente alla variabile d'ambiente PATH
  2. Eseguendo semplicemente il comando, pythonl'eseguibile incontrato per la prima volta in PATH verrà scelto per l'avvio. In altre parole, aggiungi manualmente le directory Python. Quello che aggiungi per primo verrà selezionato durante la digitazione python. I programmi consecutivi di Python (in ordine crescente di collocazione delle loro directory nel PERCORSO) saranno scelti in questo modo:

    • py -2 per il secondo python
    • py -3 per il terzo pythonecc.
  3. Indipendentemente dall'ordine dei "pitoni" puoi:

    • eseguire gli script Python 2.x usando il comando: py -2 (funzionalità Python 3.x) (ovvero verrà selezionato il primo programma di installazione di Python 2.x trovato nel PATH)
    • eseguire gli script Python 3.x usando il comando: o py -3 (cioè verrà selezionato il primo programma di installazione di Python 3.x trovato nel PATH)

Nel mio esempio ho installato Python 2.7.14 e Python 3.5.3. Ecco come inizia la mia variabile PATH con:

PERCORSO = C: \ Programmi \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Programmi \ Python_3.6 \ Scripts \; C: \ Program Files \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Programmi (x86) \ File comuni \ Intel \ Shared

...

Nota che Python 2.7 è il primo e Python 3.5 il secondo.

  • Quindi il pythoncomando in esecuzione avvierà python 2.7 (se Python 3.5 lo stesso comando avvierebbe Python 3.5).
  • L'esecuzione py -2avvia Python 2.7 (perché accade che il secondo Python sia Python 3.5, che è incompatibile con py -2). Running py -3avvia Python 3.5 (perché è Python 3.x)
  • Se tu avessi un altro pitone più avanti nel percorso che ci si lancerà in questo modo: py -4. Questo può cambiare se / quando viene rilasciata la versione 4 di Python.

Ora py -4o py -5ecc. Sulle uscite del mio sistema: Requested Python version (4) not installedo Requested Python version (5) not installedecc.

Speriamo che sia abbastanza chiaro.


Come hai potuto specificare un'installazione pip in una delle dist Python?
Victor Martínez,

Per il primo pitone trovato semplicemente digitare pip. Per qualsiasi altro python installato devi specificare manualmente il percorso, ad es. C:\Python27\Scripts\pip.py [parameters]. (Naturalmente, come scorciatoia, puoi mettere qualsiasi exe desiderato in una variabile d'ambiente.)
Nikos

@ Nik-Lz a quale comando "py -2" ti riferisci? Non mi sembra di averli su Windows 7.
Janos,

2
Questo è esattamente come dovrebbe essere usato Python su Windows in caso di più versioni.
getName


8

Ecco cosa puoi fare:

Installa cmder . Apri e usa Cmder come faresti con il tuo terminale cmd. Utilizzare l'alias di comando per creare alias di comando.

Ho fatto quanto segue:

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

E questo è tutto! ;-)


6
set-alias python2 c:\python27\python.exe
Profeta Daniele,

Utilizzare set-alias come esempio show se si utilizza Powershell. In tal caso non sarebbe necessario installare Cmder.
Profeta Daniele,

@ProphetDaniel Questo dovrebbe essere pubblicato come una risposta separata. Risponde totalmente alla domanda originale.
Dr_Zaszuś,

7

In realtà ho solo pensato a una soluzione interessante. Sebbene Windows non ti consenta di creare facilmente programmi alias, puoi invece creare file batch rinominati che chiameranno il programma corrente.

Invece di rinominare il file eseguibile che interromperà molte cose, incluso pip, creare il file python2.bat nella stessa directory di python2.exe. Quindi aggiungere la seguente riga:

%~dp0python %*

Cosa significa questa sintassi arcaica? Bene, è uno script batch, (versione Windows di bash). % ~ dp0 ottiene la directory corrente e% * passerà tutti gli argomenti a Python che sono stati passati allo script.

Ripetere l'operazione per python3.bat

Puoi anche fare lo stesso per pip e altre utility, basta sostituire la parola python nel file con pip o qualunque sia il nome del file. L'alias sarà qualunque sia il nome del file.

Soprattutto, quando aggiunto al PERCORSO, Windows ignora l'estensione in esecuzione

python3

Avvierà la versione di python3 e il comando python2 avvierà la versione di python2.

A proposito, questa è la stessa tecnica utilizzata da Spyder per aggiungersi al percorso su Windows. :)


1
Fantastica soluzione senza modificare i file Python esistenti.
Om Prakash,

3

Puoi installare più versioni di Python su una macchina e, durante l'installazione, puoi scegliere di associarne una alle estensioni di file Python. Se si installano i moduli, ci saranno pacchetti di installazione diversi per versioni diverse oppure è possibile scegliere quale versione si desidera target. Dal momento che generalmente si installano nella directory dei pacchetti del sito della versione dell'interprete, non dovrebbero esserci conflitti (ma non l'ho provato). Per scegliere quale versione di Python, è necessario specificare manualmente il percorso dell'interprete se non è quello predefinito. Per quanto ne so, avrebbero condiviso le stesse variabili PATH e PYTHONPATH, il che potrebbe essere un problema.

Nota: eseguo Windows XP. Non ho idea se qualcuno di questi cambi per altre versioni, ma non vedo alcun motivo per cui lo farebbe.


3
Ho installato simultaneamente Python 2.5, 2.6 e 3.1, non mi è mai venuto in mente che avrei potuto fare qualcosa di più difficile che eseguire tutti gli installer per ogni versione di cui ho bisogno.
SingleNegationElimination,

3

Quello che ho fatto sul mio computer Windows su cui ho installato Python 2.7 e Python 3.4 è che ho scritto un semplice file .bat nella stessa directory dei miei file Python.exe. Sembrano qualcosa del tipo

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

% * Ti consente di aggiungere argomenti (file Python) in seguito. Credo che / k mantenga aperto il prompt al termine dell'esecuzione dello script. Poi lo salvo come python27.bat Poi vado nella mia directory di Python 3 e creo un file bat lì. Ora nella mia riga di comando posso scrivere

Python27 helloworld.py

O

Python34 helloworld.py

E funzioneranno nelle rispettive versioni di Python. Assicurarsi che c: \ python27 e c: \ python34 siano nelle variabili di ambiente.

Ho ricevuto la mia risposta da qui


2

L'ho fatto in tre passaggi seguendo le istruzioni qui: Tutto questo è preso direttamente da qui: http://ipython.readthedocs.io/en/stable/install/kernel_install.html . Attualmente sto eseguendo Python 2.x su Windows 8 e ho installato Anaconda 4.2.13.

1) Innanzitutto installa l'ultima versione di Python:

conda create -n python3 python=3 ipykernel

2) Successivamente attivare python3

activate python3

3) Installa il kernel:

python -m ipykernel install --user

Se hai installato Python 3 e vuoi installare 2, cambia 2 e 3 sopra. Quando apri un nuovo blocco note, ora puoi scegliere tra Python 2 o 3.


1

Controlla le variabili di ambiente di sistema dopo aver installato Python, le directory di python 3 dovrebbero essere prima nella variabile PATH, quindi in Python 2.

Qualunque sia la variabile di percorso corrispondente per prima è quella utilizzata da Windows.

Come sempre py -2 avvierà python2 in questo scenario.


1

Ho riscontrato questo problema da solo e ho creato i miei lanciatori in un .bat in modo da poter scegliere la versione che si desidera avviare.

L'unico problema è che il tuo .py deve trovarsi nella cartella python, ma comunque ecco il codice:

Per 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

Per 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

Salvali come .bat e segui le istruzioni all'interno.


0

Installa quello che usi di più (3.3 nel mio caso) sopra l'altro. Ciò costringerà IDLE a utilizzare quello che desideri.

In alternativa (dal README di python3.3):

Installazione di più versioni

Sui sistemi Unix e Mac se si intende installare più versioni di Python utilizzando lo stesso prefisso di installazione (argomento --prefix per lo script di configurazione) è necessario assicurarsi che il file eseguibile python primario non venga sovrascritto dall'installazione di una versione diversa. Tutti i file e le directory installati utilizzando "make altinstall" contengono la versione principale e secondaria e possono quindi vivere fianco a fianco. "make install" crea anche $ {prefix} / bin / python3 che si riferisce a $ {prefix} /bin/pythonX.Y. Se si intende installare più versioni utilizzando lo stesso prefisso, è necessario decidere quale versione (se presente) è la versione "primaria". Installa quella versione usando "make install". Installa tutte le altre versioni usando "make altinstall".

Ad esempio, se si desidera installare Python 2.6, 2.7 e 3.3 con 2.7 come versione primaria, eseguire "make install" nella directory di build 2.7 e "make altinstall" negli altri.


0

Ho dovuto solo installarli. Quindi ho usato il software gratuito (e portatile) su http://defaultprogramseditor.com/ in "Impostazioni tipo file" / "Menu contestuale" / ricerca: "py", ho scelto il file .py e ho aggiunto un comando 'open' per il 2 IDLE copiando il comando esistente denominato 'apri con IDLE, modificando i nomi in IDLE 3.4.1 / 2.7.8 e sostituendo i numeri di file delle rispettive versioni nel percorso del programma. Ora devo solo fare clic con il tasto destro sul file .py e scegliere quale IDLE voglio usare. Puoi fare lo stesso con interpreti diretti se preferisci.


-1

Funziona solo se esegui il codice nell'IDE Python

Ho installato Python 2.7 e Python 3.3 sul mio sistema operativo Windows. Se provo ad avviare un file, di solito si aprirà sull'IDE di Python 2.7. Il modo in cui ho risolto questo problema, è stato quando ho scelto di eseguire il mio codice su Python 3.3, apro Python 3.3 IDLE (Python GUI), seleziono il file, apro il mio file con l'IDLE e lo salvo. Quindi, quando eseguo il mio codice, viene eseguito sull'IDLE con cui l'ho attualmente aperto. Funziona viceversa con 2.7.


-1

Ho installato sia Python 2.7.13 che Python 3.6.1 su Windows 10pro e stavo ottenendo lo stesso "Errore fatale" quando ho provato pip2 o pip3.

Quello che ho fatto per correggere questo è stato andare alla posizione di python.exe per i file python 2 e python 3 e creare una copia di ciascuno, quindi ho rinominato ogni copia in python2.exe e python3.exe a seconda della versione di Python nella cartella di installazione. Ho quindi avuto in ogni cartella di installazione di Python sia un file python.exe che un python2.exe o python3.exe a seconda della versione di Python.

Ciò ha risolto il mio problema quando ho digitato pip2 o pip3.


-2

Se non riesci a far funzionare nient'altro, apri un interprete in qualunque versione tu scelga (preferisco usare iPython) e:

import subprocess

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

Questo utilizza la versione di Python attualmente in uso. Funziona bene per un singolo script, ma ti sfuggirà rapidamente se ci sono molti script che esegui, nel qual caso puoi sempre creare un file batch con tutte queste chiamate all'interno. Non è la risposta più elegante, ma funziona.

C'è un modo per creare alias per diverse versioni di Python su Linux?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.