Come eseguire più versioni di Python su Windows


170

Avevo installato due versioni di Python sul mio computer (versioni 2.6 e 2.5). Voglio eseguire 2.6 per un progetto e 2.5 per un altro.

Come posso specificare quale voglio usare?

Sto lavorando su Windows XP SP2.


3
Un buon suggerimento per porre domande è spiegare cosa hai provato e in che modo ha fallito. Quindi: cosa hai provato e in che modo non ha funzionato?
Lennart Regebro,

Nota, non sono riuscito a trovare domande precedenti su questo su Windows, quindi ho cambiato il titolo per riflettere quello.
Lennart Regebro,


Se si desidera eseguire 3.3 insieme a 2.7, questa è la risposta più standardizzata : - stackoverflow.com/questions/15912063/…
Omar Tariq,

Risposte:


135

Eseguire una copia diversa di Python è facile come avviare l'eseguibile corretto. Dici che hai avviato un'istanza di Python, dalla riga di comando, semplicemente digitando python.

Ciò che fa ciò in Windows, è di trascinare la %PATH%variabile d'ambiente, controllando la presenza di un eseguibile, file batch ( .bat), file di comando ( .cmd) o qualche altro eseguibile da eseguire (questo è controllato dalla PATHEXTvariabile d'ambiente), che corrisponde al nome assegnato. Quando trova il file corretto da eseguire, il file viene eseguito.

Ora, se hai installato due versioni di Python 2.5 e 2.6, il percorso avrà entrambe le loro directory al suo interno, qualcosa come PATH=c:\python\2.5;c:\python\2.6Windows smetterà di esaminare il percorso quando trova una corrispondenza.

Quello che devi veramente fare è chiamare esplicitamente una o entrambe le applicazioni, come c:\python\2.5\python.exeo c:\python\2.6\python.exe.

L'altra alternativa è quella di creare una scorciatoia per il rispettivo python.exechiamante uno di loro python25e l'altro python26; puoi quindi semplicemente eseguire python25sulla tua riga di comando.


41
come creare quella scorciatoia
Bilal Basharat

8
Quando sei in Windows, vai alla cartella che contiene la versione di Python per cui vuoi creare un collegamento, quindi fai clic con il pulsante destro del mouse e crea un collegamento. È quindi possibile rinominarlo.
Aodj,

3
Mi dispiace scavare un lungo post morto, ma come farai funzionare il collegamento senza richiedere l'estensione .lnk?
Nathan Tornquist,

7
Se un collegamento non funziona, puoi fare come ha detto @FJ e semplicemente copiare e rinominare. In caso contrario, è possibile creare un collegamento simbolico, utilizzando '' mklink '' sulla riga di comando.
aodj,

7
Il modo migliore non sarebbe quello di creare un file bat chiamato python25 e python26 e farli chiamare la versione appropriata? Quindi tutto ciò che dovresti fare è mettere quei 2 file bat accanto ai loro binari.
Jeremy Cantrell,

100

Aggiunta di altre due soluzioni al problema:

  • Usa pylauncher (se hai Python 3.3 o versioni successive non è necessario installarlo come già fornito con Python) e aggiungi linee shebang ai tuoi script;

#! c:\[path to Python 2.5]\python.exe- per gli script che si desidera eseguire con Python 2.5
#! c:\[path to Python 2.6]\python.exe- per gli script che si desidera eseguire con Python 2.6

o invece di eseguire il pythoncomando esegui pylauncher command ( py) specyfing quale versione di Python desideri;

py -2.6- versione 2.6
py -2- ultima versione installata 2.x
py -3.4- versione 3.4
py -3- ultima versione installata 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]

per esempio

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

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

allora puoi attivare il primo e lavorare con Python 2.5 in questo modo
c:\venvs\2.5\activate
e quando vuoi passare a Python 2.6 lo fai

deactivate  
c:\venvs\2.6\activate

pylauncher sembra essere un'implementazione prototipo di PEP 397 che è stata accettata come traccia standard nel 2011. Sai perché il launcher non viene ancora distribuito con Python per Windows o perché esiste ancora solo l'implementazione prototipo di Vinay Sajip?
martineau,

4
Pylauncher viene distribuito con Python a partire dalla versione 3.3 - vedi python.org/download/releases/3.3.0 . Inoltre penso che l'implementazione di Vinay Sajip sia l'implementazione non solo un prototipo.
Piotr Dobrogost,

1
Grazie per il chiarimento. Il pylauncher di IMHO dovrebbe essere distribuito anche come parte dell'ultima versione di Python 2 perché le persone che usano quella versione hanno maggiori probabilità di coloro che desiderano installare più versioni (ed è più probabile che lo facciano se erano a conoscenza della sua funzionalità e disponibilità).
martineau,

StackOverflow dovrebbe consentire più voti, la tua risposta merita infiniti voti! Seriamente, dove sei stato fratello! : D Semplice, chiaro e funzionante ovviamente!
3bdalla,

Suggerimenti molto buoni. Ho usato il secondo (virtualenv). L'unica differenza che ho trovato era che dovevo includere '\ script' nel percorso di attivare, ad esempio: c:\venvs\2.5\scripts\activate. Questo è su Windows 10 se questo fa la differenza. A parte questo, funziona come un fascino, grazie.
Dave Marley,

53

Da Python 3.3 in poi, c'è il launcher Python ufficiale per Windows ( http://www.python.org/dev/peps/pep-0397/ ). Ora puoi usare il #!pythonXper determinare la versione desiderata dell'interprete anche su Windows. Vedi maggiori dettagli nel mio altro commento o leggi PEP 397.

Riassunto: I py script.pylanci la versione di Python indicato in #!o Python 2 se #!è mancante. I py -3 script.pylanci il Python 3.


1
Questa è la risposta che sto cercando. Corro Windows 10 con Python 2.7 e Python 3.4.3. Nel prompt dei comandi digitare "py [python_version_number]" ex: py -3 o py invocherà la versione di Python in uso. Penso che le variabili di ambiente debbano essere impostate prima di utilizzare questo. questo è conveniente per me.
CodeMonkey

2
@Inuka: non è necessario impostare variabili di ambiente. Il programma di installazione di Python imposta le associazioni con l' .pyestensione. Il launcher stesso è installato in C:\Windowsquello che è già in PATH. In questo modo, anche la PATHvariabile non deve essere modificata.
PEPR

2
Grazie mille per la tua risposta amico. Da questo modo possiamo anche invocare il pip. py -2 -m pip installa SomePackage o py -3.4.3 -m pip installa SomePackage
CodeMonkey

Penso che questa sia la soluzione più semplice e senza complicazioni.
prasad,

46

Come per @alexander puoi creare una serie di collegamenti simbolici come di seguito. Mettili da qualche parte che è incluso nel tuo percorso in modo che possano essere facilmente invocati

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

Finché c: \ bin o dovunque tu li abbia inseriti è sul tuo percorso ora puoi andare

> python25

4
Idea intelligente. BTW mklinkè disponibile solo nativamente in Windows Vista / 2008 +. Su XP e Server 2003 è possibile creare un "collegamento" invece di utilizzare fsutil hardlink create <new filename> <existing filename>e inserire o spostare il <nuovo nome file> in un punto del percorso. I collegamenti fisici funzionano solo sulla stessa unità, tuttavia.
martineau,

Questa è una buona soluzione, non sono sicuro che funzioni anche senza un file system basato su NTFS.
meawoppl

Sì, richiede il supporto per i collegamenti simbolici NTFS che credo siano stati introdotti in Vista (potrei sbagliarmi). L'uso su XP richiede l'uso di un driver diverso . Sembra che sia stato spento prima o dopo l'uscita generale.
Christopher Hackett,

soluzione migliore più semplice
giantas,

15
  1. installa python

    • C: \ Python27
    • C: \ Python36
  2. variabile d'ambiente

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. rinomina file

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

    • python2 -m pip install package
    • python3 -m pip install package

Penso che più o meno questa sia la soluzione pratica per la domanda. Ciò è più utile rispetto all'approccio in cui il collegamento / collegamento simbolico viene utilizzato per chiamare lo script Python. Invece di rinominare il file, possiamo copiare e incollare il file binario (python.exe), quindi rinominarlo in base alla sua versione (come mostrato in questa risposta). A proposito, il pythoncomando sarebbe confuso con il sistema operativo.
testuser

Bella risposta! Grazie ~ @ 山 茶树 和 葡萄 树
Bright Chang,

14

Ad esempio per il tipo di versione 3.6 py -3.6. Se hai anche versioni a 32 e 64 bit, puoi semplicemente digitare py -3.6-64o py -3.6-32.


3
Questa dovrebbe essere la risposta accettata! Grazie mille!
Xonshiz,

3
Questa è probabilmente la risposta migliore, in quanto non richiede la ridenominazione dei file e gli IDE di terze parti rileveranno entrambi normalmente!
Incantare l'

potresti migliorare la risposta con ulteriori spiegazioni - dov'è questo pyeseguibile - è un'aggiunta solo per Windows? È possibile incorporarlo in uno script da riga di comando multipiattaforma che ha in alto: #!/usr/bin/env python3ad esempio?
Ed Randall,

7

Quando installi Python, non sovrascriverà altre installazioni di altre versioni principali. Quindi l'installazione di Python 2.5.x non sovrascriverà Python 2.6.x, sebbene l'installazione 2.6.6 sovrascriverà 2.6.5.

Quindi puoi semplicemente installarlo. Quindi chiami la versione di Python che desideri. Per esempio:

C:\Python2.5\Python.exe

per Python 2.5 su Windows e

C:\Python2.6\Python.exe

per Python 2.6 su Windows o

/usr/local/bin/python-2.5

o

/usr/local/bin/python-2.6

su Windows Unix (inclusi Linux e OS X).

Quando installi su Unix (inclusi Linux e OS X) otterrai un pythoncomando generico installato, che sarà l'ultimo che hai installato. Questo non è per lo più un problema in quanto la maggior parte degli script chiamerà esplicitamente /usr/local/bin/python2.5 o qualcosa solo per proteggerlo. Ma se non vuoi farlo, e probabilmente non puoi installarlo in questo modo:

./configure
make
sudo make altinstall

Nota "altinstall" che significa che lo installerà, ma non sostituirà il pythoncomando.

Su Windows non ottieni un pythoncomando globale per quanto ne so, quindi non è un problema.


grazie per il tuo aiuto, per favore, rispondi anche alla mia seconda domanda: come posso eseguire entrambi contemporaneamente? mentre sono passato con successo dal 2,5 al 2,6
Bilal Basharat,

@Bilal Basharat: Windows è un sistema operativo multi-tasking se vuoi eseguire due cose contemporaneamente, le avvii entrambe, quindi non capisco la tua domanda.
Lennart Regebro,

attualmente sto lavorando su python2.5. semplicemente elaborami come posso eseguire anche 2.6? quando scrivo 'Python' nel prompt dei comandi di Windows per inserire shell Python che appare Python2.5. nell'unità c avevo installato entrambe le versioni. quando vado a C: \ Python2.6 \ Python.exe. di python2.6 temporaneamente attivato. appena lascio C: \ Python2.6 \ si trasforma nuovamente in versione 2.5
Bilal Basharat,

3
@Bilal Basharat: ho già risposto a questo. Non è "temporaneamente attivato". Hai eseguito Python 2.6 con il comando C: \ Python2.6 \ Python.exe ed è così che lo esegui. Ed esegui Python 2.5 con il comando C: \ Python2.5 \ Python.exe. È così che esegui entrambi allo stesso tempo.
Lennart Regebro,

1
@Bilal Basharat: se la variabile C:\Python2.5o C:\Python2.6appare nella PATHvariabile di ambiente, la versione corrispondente di Python diventerà quella predefinita a meno che non la si ignori specificando esplicitamente un percorso diverso da .exe che si desidera utilizzare.
martineau,


5

Ecco un trucco rapido:

  1. Vai alla directory della versione di Python che vuoi eseguire
  2. Fare clic con il tasto destro su python.exe
  3. Seleziona " Crea collegamento "
  4. Assegna a quella scorciatoia un nome da chiamare (uso p27, p33 ecc.)
  5. Sposta quel collegamento nella tua home directory ( C:\Users\Your name)
  6. Apri un prompt dei comandi e inserisci name_of_your_shortcut.lnk(Io uso p27.lnk)

1

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

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

sono tutti nel percorso di sistema, scegli la versione che vuoi eseguire

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.
>>>

questo ha funzionato per me. Devo solo usare copia invece di cp. Inoltre, quando si esegue questo comando, è necessario trovarsi da qualche parte nel percorso ed entrambe le installazioni di Python, ad esempio c: \ python34 \ bin \ python.exe e c: \ python27 \ bin \ python.exe, devono essere presenti anche nel percorso. (preferibilmente in quell'ordine).
Gregor Schmitz,

1

Utilizzando un file batch per passare, facile ed efficiente su Windows 7. Uso questo:

Nella finestra di dialogo delle variabili di ambiente (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe),

Nella sezione variabili utente

  1. aggiunto% pathpython% alla variabile d'ambiente path

  2. rimosso qualsiasi riferimento ai percorsi di Python

Nella sezione variabili di sistema

  1. rimosso qualsiasi riferimento ai percorsi di Python

Ho creato file batch per ogni installazione di Python (esempio per 3,4 x64

Nome = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) solo per ricordare.

Contenuto del file =

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

     setx PathPython %PathPython%

Per passare da una versione all'altra, eseguo il file batch in modalità amministratore.

!!!!! Le modifiche sono effettive per la finestra del prompt dei comandi SUBSEQUENT APERTA. !!!

Quindi ho il controllo esatto su di esso.


0

Il modo più semplice per eseguire più versioni di Python su Windows è descritto di seguito come segue: -

1) Scarica le ultime versioni di python da python.org/downloads selezionando la versione pertinente per il tuo sistema.

2) Esegui il programma di installazione e seleziona Aggiungi python 3.x al percorso per impostare automaticamente il percorso in python 3 (devi solo fare clic sulla casella di controllo). Per python 2 apri il tuo programma di installazione di python 2, seleziona le preferenze che desideri, ma ricorda di impostare Aggiungi python.exe al percorso su Verrà installato sul disco rigido locale , Ora fai clic su Avanti e attendi che l'installazione finisca.

3) Quando entrambe le installazioni sono complete. Fai clic con il tasto destro del mouse sul mio computer - Vai a proprietà - Seleziona impostazioni di sistema avanzate - Vai a variabili di ambiente - Fai clic su Nuovo in Variabili di sistema e aggiungi una nuova variabile di sistema con nome variabile come PY_PYTHON e imposta questo valore variabile su 3 . Ora fai clic su OK e dovresti aver finito.

4) Ora per provare questo aprire il prompt dei comandi . Una volta entrato, digita python o py , dovrebbe aprire python3 .

5) Ora esci da python3 digitando exit () . Ora digita py -2 dovrebbe aprire python 2.

Se nulla di tutto ciò funziona, riavvia il computer e se il problema persiste, disinstalla tutto e ripeti i passaggi.

Grazie.



-1

Utilizzando Rapid Environment Editor puoi spingere in alto la directory dell'installazione Python desiderata. Ad esempio, per avviare python dalla directory c: \ Python27, assicurarsi che la directory c: \ Python27 sia prima o sopra la directory c: \ Python36 nella variabile d'ambiente Path. Dalla mia esperienza, viene eseguito il primo eseguibile python trovato nell'ambiente Path. Ad esempio, ho installato MSYS2 con Python27 e da quando ho aggiunto C: \ MSYS2 al percorso precedente a C: \ Python36, python.exe dalla cartella C: \ MSYS2 .... è in esecuzione.


-4

Basta chiamare l'eseguibile corretto


attualmente sto lavorando su 2.5. semplicemente elaborami come posso eseguire anche 2.6. nel prompt dei comandi di Windows ho dovuto scrivere 'python' per accedere alla shell python. ed è 2.5. nell'unità c avevo installato entrambe le versioni.
Bilal Basharat,

Invece di pythonentrare nella shell provare python2.5o python2.6. Non sono un utente di Windows, ma su unix / usr / bin / python di solito è un alias dell'eseguibile completo, presumo che Python in Windows sia installato in modo simile
albertov

1
Su Windows il nome dell'eseguibile è sempre python.exe, ma si cambia il percorso dell'eseguibile. È stato già spiegato più volte.
jgritty
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.