2013-04-09 15 views
35

C'è un modo per installare python 3 su un'installazione di python 2 senza rovinare nulla? Il problema principale è che ho il codice che viene eseguito da "python xxxxx.py abc123". C'è un modo per cambiare python 3 per essere "python3 xxxx.py abc123"? Lo stesso comando python è il conflittoCome si eseguono Python 2 e 3 in Windows 7?

+0

È certamente possibile, poiché "installare python" sta solo estraendo un sacco di cartelle. Basta eseguire gli installer e avrai una cartella python26 e python32 nell'unità C.Per quanto riguarda il comando, è necessario un po 'di giocherellare con le variabili di ambiente ogni volta che si desidera utilizzare l'altro, quindi forse è necessario un breve script di bash per modificare il PATH? –

+0

http://j.mp/ZfKVrb forse questo aiuterà – dnelson

+0

Nessun bisogno di smanettare da Python 3.3 in poi. – pepr

risposta

80

Esiste un modo migliore di coesistenza/avvio di Python 2 e Python 3 su Windows. Python 3.3 ha introdotto il launcher Python per Windows (vedere http://www.python.org/dev/peps/pep-0397/).

Dopo l'installazione di Python 3.3, il py.exe e pyw.exe viene copiato nella directory c:\Windows, e le associazioni sono impostati per l'estensione .py in modo che utilizzi il programma di avvio. Di default, Python 2 viene lanciato per py script.py. Il py -3 script.py lancia Python 3. (Questo significa anche che nessun percorso per Python deve essere aggiunto per l'ambiente -. Il C:\Windows è già nella PATH)

Il migliore di tutti è che #!python2 nello script causa sindrome lauching tramite Python 2, lo #!python3 causa l'avvio dello script tramite Python 3. In questo modo, puoi utilizzare gli script per entrambe le versioni di Python e puoi renderli univoci - py script.py o semplicemente facendo clic sull'icona dello script.

Ci sono più dettagli ma questo è fondamentalmente quello che ti serve.

Aggiornamento: Quando si usa Python launcher per Windows, è anche possibile lanciare lo script Python da cmd finestra digitando > script.py (cioè senza digitare esplicitamente py --il nome del lanciatore Python - di fronte alla sceneggiatura nome) o anche digitando il nome senza l'estensione .py (che è solo > script).

In questo modo, le cose iniziano ad assomigliare al modo Unix di denominare gli script (senza la necessità dell'estensione); tuttavia, è comunque necessario aggiungere l'estensione .py durante la creazione del file di script.

(sì, è un po 'più disordinato rispetto all'approccio Unix. Questa è la differenza tra il "pensare prima!" e la "Sell prima!" approcci degli sviluppi dei sistemi operativi. Comunque, il mio complimenti al team di sviluppo di Python per spremere il meglio di Windows - rilasciando il launcher Python per Windows.)

+7

Non vedo py.exe o pyw.exe. Ma quando lancio Python ottengo: 'errore Python Fatal: Py_Initialize: incapace di caricare il file system codec file "C: \ Python27 \ lib \ codifiche \ __ init__.py", la linea 123 sollevare CodecRegistryError, \ ^ SyntaxError : sintassi non valida'. Il che significa che python3 sta provando a lanciare python2. – CMCDragonkai

+0

In realtà py.exe è in C: \ Python33. Ma se provo a lanciare py -3, ottengo lo stesso errore di cui sopra. – CMCDragonkai

+0

@CMCDragonkai: non posso confermarlo. Ho appena disinstallato tutte le versioni di Python che avevo sul mio disco, rimuovendo fisicamente anche C: \ PythonXX (con i pacchetti del sito, ecc.), Rimuovendo fisicamente anche C: \ Windows \ py.exe e pyw.exe. Quindi ho scaricato e installato http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi (py.exe non aggiunto a C: \ Windows), quindi http: //www.python.org/ftp/python/3.3.2/python-3.3.2.amd64.msi - py.exe e pyw.exe aggiunti a C: \ Windows. Che versione di Windows hai? – pepr

6

Non sono sicuro se sarebbe soddisfare le vostre esigenze, ma si dovrebbe dare un'occhiata a virtualenv: http://www.virtualenv.org/en/latest/

Questo vi permetterà di creare ambienti separati per Python 2 e 3 (con il - p flag). Se il tuo caso d'uso è qualcosa per cui questo non funzionerebbe, aggiorna la domanda con alcune più specifiche e sono certo che otterrai altri suggerimenti.

2

Supponendo di installare python3 in una directory separata, è possibile anche rinominare l'eseguibile python 3 in python3.exe.

+1

Rinominare ".exe" interrompe l'uso di 'py -3', che è stato suggerito da @pepr. – Kevin

0

È necessario modificare la variabile di ambiente per includere il percorso Python 3 o Python 2.

Problemi correlati