Usare Python 2.7 e 3.6 in Windows 10 con virtualenv

Ho deciso di disinstallare Python 3.5.2 dal mio sistema Windows 10 e dotarmi di due ambienti separati con Python 2.7.13 e Python 3.6.1 in modo da poter selezionare l’interprete più opportuno in base agli script da programmare ed eseguire, e per ovviare a …

Pubblicato da Roberto Fusi in Web Development. Aggiornato .
Lunghezza testo: 414 parole. Stima tempo lettura: 2 minuti.
Tag: python, windows. .

Ho deciso di disinstallare Python 3.5.2 dal mio sistema Windows 10 e dotarmi di due ambienti separati con Python 2.7.13 e Python 3.6.1 in modo da poter selezionare l’interprete più opportuno in base agli script da programmare ed eseguire, e per ovviare a frustranti errori di compatibilità ed aggiornamento del codice. Capita spesso che alcuni script datati non funzionino correttamente con Python 3.

Per prima cosa, ho disinstallato Python 3.5.2 tramite l’applicazione Programmi e funzionalità del Pannello di Controllo di Windows: questa operazione ha lasciato le cartelle Python\Python35-32\Lib e Python\Python35-32\Scripts. Procederò in un secondo momento a rimuovere tutta la cartella Python35-32 quando sarò sicuro di aver reinstallato tutti i package che mi servono per le nuove versioni di Python.

Poi, ho scaricato i files python-2.7.13.msi e python-3.6.1.exe da python.org e li ho eseguiti. Durante l’installazione, ho specificato due percorsi di installazione distinti:

C:\Users\rfusi\AppData\Local\Programs\Python\Python27
C:\Users\rfusi\AppData\Local\Programs\Python\Python36

Al termine dell’installazione, ho aperto il Prompt dei comandi ed ho digitato python: ho rilevato che il comando non é riconosciuto…

Per risolvere, ho aperto “Pannello di controllo > Sistema > Impostazioni di sistema avanzate > Variabili d’ambiente…” ed ho modificato la variabile utente PATH, aggiungengo le seguenti 2 righe:

C:\Users\rfusi\AppData\Local\Programs\Python\Python36
C:\Users\rfusi\AppData\Local\Programs\Python\Python36\Scripts

In questo modo, il Prompt dei comandi utilizzerà Python 3.6.1 come interprete predefinito per gli script.

A questo punto, ho installato virtualenv con pip.

pip install virtualenv

Quindi, creo la directory VirtualEnv in C:\Users\rfusi\AppData\Local\Programs\Python ed il file setup_ve.bat contenente il seguente codice:

virtualenv -p C:\Users\rfusi\AppData\Local\Programs\Python\Python27\python.exe C:\Users\rfusi\AppData\Local\Programs\Python\VirtualEnv\2.7
virtualenv -p C:\Users\rfusi\AppData\Local\Programs\Python\Python36\python.exe C:\Users\rfusi\AppData\Local\Programs\Python\VirtualEnv\3.6

Facendo doppio click sul file setup_ve.bat, si avvia la procedura per impostare i 2 ambienti python virtuali (ho registrato le istruzioni nel file “.bat”, solo per non dimenticarmi come si fa…).

Variabile PATH Utente in Windows 10

Creo altri 2 file, activate_p27.bat e activate_p36.bat per registrare le istruzioni che attivano rispettivamente i due ambienti python.

[activate_p27.bat]
C:\Users\rfusi\AppData\Local\Programs\Python\VirtualEnv\2.7\Scripts\activate.bat

[activate_p36.bat]
C:\Users\rfusi\AppData\Local\Programs\Python\VirtualEnv\3.6\Scripts\activate.bat

Per finire, aggiungo C:\Users\rfusi\AppData\Local\Programs\Python alla variabile PATH dell’utente come fatto in precedenza.

set path=%path%;C:\Users\rfusi\AppData\Local\Programs\Python

In questo modo, quando apro il Prompt dei comandi e voglio attivare Python 2.7.13, mi basta digitare il comando use_p27; per ripristinare l’ambiente normale, basta digitare il comando deactivate.

virtualenv in azione con Windows 10

Prima di concludere, suggerisco di creare il file sitecustomize.py in VirtualEnv\2.7\Lib\site-packages con il seguente codice che imposta la codifica di default a UTF-8.

# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('UTF8')

In questo modo ho aggirato l’errore UnicodeDecodeError: ‘ascii’ codec can’t decode byte… che ho riscontrato con qualche script.

Riferimenti

  1. How to run multiple Python versions on Windows
  2. How to fix: “UnicodeDecodeError: ‘ascii’ codec can’t decode byte”
  3. Solving Unicode Problems in Python 2.7

Libri suggeriti

Condividi questo articolo

Se ti è piaciuto questo articolo e pensi possa essere utile anche ad altri, condividilo con i tuoi amici e conoscenti, facendo click sui pulsanti dei tuoi social network preferiti.

P.S. Grazie!

Commenti

Cosa pensi di questo articolo? Hai dei suggerimenti da darmi o vuoi segnalare la tua esperienza in questa pagina? Registrati con Disqus ed inserisci il tuo commento qui sotto!

Inoltre, se lo desideri puoi anche scrivermi una e-mail.

Presentazione

IpeRteSTi é un blog curato da Roberto Fusi. Raccoglie suggerimenti ed esperienze personali riguardo Internet, Web Development e la Digital Economy.

Seguimi sui social

LinkedInTwitterGooglePlusFeedburner for IpeRteSTi

Iscriviti alla mia newsletter