Installare e usare Python su Windows (parte 2/10).

Attenzione!

Queste guide non sono più aggiornate, e in alcuni punti sono proprio superate.
Il mio libro Python in Windows tratta questi temi, e molto altro, in modo molto più completo e aggiornato. 

Installazione.

Quale versione di Python?

Come forse sapete, qualche anno fa Python si è evoluto in una nuova versione (Python 3) incompatibile con quella precedente (Python 2). Dal punto di vista dell’apprendimento, le due versioni sono pressoché uguali: se imparate Python 3, basta poco per imparare anche Python 2, e viceversa. Ma tecnicamente le due versioni sono incompatibili, e ci sono voluti anni di lavoro (e recriminazioni) perché Python 3 fosse adottato dalla comunità degli sviluppatori.
Oggi il processo di migrazione verso Python 3 è compiuto. La quasi totalità delle librerie importanti è disponibile anche per Python 3, e nessuno produce più cose nuove per Python 2. Tuttavia Python 2 resta ancora molto adottato soprattutto perché una gran quantità di “programmi” (ovvero, non librerie) è ancora scritta in Python 2, e sarebbe troppo costoso migrare. Python 2 è una versione “legacy”: è ancora supportata dagli sviluppatori e riceve aggiornamenti di sicurezza e bugfix. Tuttavia, lo sviluppo di nuove feature nel linguaggio avviene ormai solo più su Python 3. Tra qualche anno, Python 2 sarà dichiarato ufficialmente non supportato e abbandonato.
Di conseguenza, la scelta in realtà è piuttosto ovvia. Se iniziate a programmare con Python, dovreste installare Python 3. Usate Python 2 solo se ne avete bisogno: ovvero, se lavorate in un team che usa Python 2, oppure se avete bisogno di librerie o programmi che non sono mai stati aggiornati a Python 3.
Più nello specifico, quale versione utilizzare? Le versioni di Python sono numerate secondo il classico schema a tre numeri: un numero di versione maggiore (2 o 3, incompatibili tra loro), seguito da un numero di versione minore, seguito da un numero di versione di bugfix. Le versioni minori sono tra loro compatibili in linea di massima, anche se versioni successive possono introdurre delle nuove feature.
Se usate Python 2, in pratica non avete scelta: dovete installare la versione 2.7, la più recente. Installare la 2.6 è ormai una rarità per specialisti (si fa solo se ce n’è assolutamente bisogno). Le versioni ancora precedenti sono obsolete. All’epoca in cui sono scritti questi appunti, l’ultima release della serie 2.7 è la versione 2.7.15: in ogni caso, dovreste installare la più recente tra quelle disponibili.
Se usate (come probabile) Python 3, allora la versione più recente all’epoca di questi appunti è la 3.7.0, e vi conviene installare quella (o una più recente della serie 3.7, man mano che usciranno). Va bene anche installare la versione più recente della serie 3.6, o persino anche la 3.5 se vi serve. Le serie precedenti, invece, sono sconsigliate: la 3.4 funziona, ma manca di alcuni elementi importanti proprio in ambiente Windows: se la usate, allora questi appunti non sono validi qua e là. Le versioni ancora precedenti (dalla 3.0 alla 3.3) non sono più supportate.
Ed eccoci al bello: non dovete per forza scegliere, è possibile installare e utilizzare più versioni di Python contemporaneamente. Non occorre farlo: tuttavia è possibile e anche facile. In questi appunti, a titolo di esempio, installeremo e impareremo a usare le versioni 3.7.0 e 2.7.15. Tuttavia è possibile anche installare più di due versioni, magari più versioni di Python 3 (per esempio, la 3.6 e la 3.7 insieme)… o anche, naturalmente, scegliere e installare una sola versione e accontentarsi di quella.
Una raccomandazione: anche se per il momento decidete di installare una sola versione di Python, seguite ugualmente tutte le raccomandazioni che seguono, come se doveste utilizzare due versioni insieme. Sarà più facile aggiungere una seconda versione in seguito, nel caso.

Installare Python 3.7.

Per prima cosa, installiamo Python 3 (ma potete cominciare anche con Python 2, se preferite). La serie più aggiornata al momento disponibile è la 3.7, e per la precisione la versione 3.7.0. Andiamo sul sito di Python e diamo un’occhiata alla lista degli installer disponibili. Ci sono molte opzioni, ma noi vogliamo il “Windows x86-64 executable installer”. Scarichiamo l’eseguibile e… lo eseguiamo, naturalmente.
Nella prima schermata, invece di cliccare sull’allettante “Install now”, scegliamo “Customize installation” e verifichiamo nel dettaglio le varie possibilità. In pratica ci interessano tutte le opzioni: l’unica voce che, volendo, possiamo tralasciare è “Python Test Suite”. Tutte le altre devono essere selezionate. Nella schermata successiva, possiamo tralasciare solo le due voci relative alle opzioni di debug. È fondamentale in particolare selezionare “Add Python to environment variables”.
Una considerazione particolare merita la voce “Install for all users”. Se avete i permessi necessari (siete amministratori) vi conviene selezionarla. Altrimenti, non vi resta che installare solo nel vostro user-space, se il vostro account gode almeno di questo privilegio. Notate che Python verrà installato in C:/Program Files/Python37 se lo installate “for all user”; se lo installate solo per voi stessi, finirà invece in C:/Users/<VOSTRO_NOME>/AppData/Local/Programs/Python/Python37.
Se avete la possibilità di installare “for all users”, allora naturalmente (nella schermata precedente) vi conviene installare “for all users” anche il “py launcher” (vedremo poi di cosa si tratta).
Concluse queste scelte, non resta che installare. Al termine, possiamo verificare se Python è stato effettivamente installato in modo corretto: apriamo una shell, e avviamo l’eseguibile di Python. Siccome durante l’installazione abbiamo specificato che Python deve essere inserito nella path di sistema, basterà inserire python e premere invio: dovrebbe apparire la shell di Python, più o meno così:
> python
Python 3.7.0 ([etc]) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Alcune osservazioni. Primo, il prompt della shell > è il prompt generico di Windows (l’equivalente di $ in Linux). In questi appunti significa “qualsiasi directory di lavoro va bene”: nell’esempio qui sopra, potreste avere un prompt come C:\>, o qualsiasi altro: siccome Python è nella path di sistema, Windows è in grado di trovare l’eseguibile python.exe da qualunque directory di lavoro in cui vi trovate. Notate che il prompt della shell > non va confuso con il prompt dell’interprete interattivo dei comandi Python >>> (il fatto che l’interprete interattivo dei comandi Python si chiami per brevità “shell di Python” contribuisce alla confusione!). Secondo, tra le informazioni mostrate nell’intestazione della shell di Python, non lasciatevi ingannare da quel on win32: Python non crede che il vostro sistema è a 32 bit. Per Python, win32 vuole dire Windows in generale. Terzo, per uscire dalla shell di Python e tornare al prompt normale, basta inserire exit() e premere invio.
Una volta verificato che il comando python funziona, per sicurezza verificate che funzioni anche il più semplice py (anche questo eseguibile dovrebbe essere nella path di sistema. Vedremo tra poco esattamente che ruolo ha). Per il momento, il risultato dovrebbe essere lo stesso.

Installare Python 2.7.

Adesso possiamo installare anche Python 2.7 (al momento di scrivere questi appunti, la versione 2.7.13 è la più recente: controllate di avere sempre la più aggiornata). Come prima, guardiamo la lista degli installer disponibili e scegliamo il “Windows x86-64 MSI installer”, scarichiamolo ed eseguiamolo.
Questa volta vediamo subito che l’installer è un vecchio MSI, molto più spartano di quello “all’ultima moda” della serie 3.6/3.7. Ma poco importa, le opzioni sono molto simili. Se possibile, installiamo “for all users”. Notiamo che questa volta la directory proposta è banalmente C:/Python27, in tutti i casi. Questo è un triste retaggio del passato: fino alla versione 3.5, Python si installava direttamente in C:/, pratica naturalmente sconsigliabile in Windows, e perfino un potenziale rischio per la sicurezza. Ma pazienza, ormai la convenzione è troppo radicata per poterla cambiare.
Per quanto riguarda le altre opzioni, in generale devono essere tutte selezionate. Accertatevi che “Add python.exe to Path” sia selezionata. Come sopra, potete trascurare “Test suite”. L’unica complicazione notevole riguarda “Register extension”: questa voce dovrebbe essere
  • inclusa, se avete intenzione di installare solo Python 2;
  • esclusa, se avete intenzione di installare anche Python 3 (e in particolare una versione superiore alla 3.3).
    Nel nostro caso, dunque, la escluderemo. Vedremo che è sempre possibile registrare le associazioni manualmente in seguito, se necessario.
Terminata l’installazione, verifichiamo che tutto sia a posto. Questa volta il comando necessario nella shell è py -2 (spiegheremo meglio tutto tra pochissimo):
> py -2
Python 2.7.15 ([etc]) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Anche in questo caso, per uscire da Python potete inserire exit().

Scegliere se avviare Python 2 oppure Python 3.

Adesso che avete due versioni di Python installate, occorre trovare il modo di avviare l’una o l’altra, a scelta. Per fortuna questo è semplicissimo.
Se avete installato Python 3 (almeno dalla 3.3 in poi), avete a disposizione un apposito “launcher” py.exe che serve appunto a gestire più versioni di Python contemporaneamente. Il launcher non è disponibile per le versioni precedenti di Python. In particolare, se avete installato solo la 2.7, di sicuro non avete il launcher: del resto, in questo caso non ne avete bisogno: per avviare l’unico Python di cui disponete, vi basterà un python dalla shell.
Il launcher vi consente di avviare rapidamente la versione di Python che preferite: usate py -2 per avviare Python 2, e py -3 per Python 3. Un py senza ulteriori specificazioni, d’altra parte, avvia la versione più recente (nel nostro caso, la 3.7).
Il launcher funziona allo stesso modo anche per versioni diverse di Python 3 (o di Python 2, per quel che vale). Per esempio, supponiamo che abbiate installate contemporaneamente le versioni 2.7, 3.6 e 3.7: allora potete selezionarle con py -2, py -3.6 e py -3.7 rispettivamente. Inoltre, py -3 da solo avvierà la versione più recente di Python 3 (in questo caso la 3.7).
Naturalmente, se avete una sola versione di Python installata, allora py (o python) avvieranno sempre e solo quella.

Installazione di default.

Che cosa succede quando, invece di usare il launcher py, invocate direttamente l’eseguibile di Python, ovvero python, dalla shell? Questo è poco importante al momento perché in pratica, da quando esiste il launcher, vi conviene usare quello. L’unico caso in cui py non è disponibile è quando avete solo Python 2 installato: allora userete python per avviare l’unico Python che avete a disposizione. Vedremo più tardi che le cose si complicano leggermente quando entrano in gioco i virtual environments.
Invocare python dalla shell avvia la “versione di default” di Python. Che cos’è la “versione di default”? Chiaramente, se avete una sola versione installata, non può essere che quella. Se ne avete più di una, allora è la prima che Windows trova nella path di sistema.
Questo può essere un po’ complicato. Se installate una versione di Python senza l’opzione di includerla nella path di sistema, allora ovviamente Windows non ha modo di conoscere l’indirizzo esatto dell’eseguibile python.exe, e quindi un python dalla shell non basterà a trovare quella versione (per avviarla, dovete specificare l’indirizzo completo, per esempio C:/Program Files/Python35/python.exe o qualcosa del genere). Se invece al momento dell’installazione specificate che l’eseguibile deve essere incluso nella path di sistema, allora un semplice python troverà l’eseguibile. Ma se più installazioni sono nella path di sistema, allora python si fermerà alla prima che trova nell’ordine, e avvierà quella. Siccome l’installer di Python inserisce la sua versione in testa alla path di sistema, in pratica la prima versione che Windows trova è l’ultima che avete installato in ordine di tempo. Ma questo può essere ancora complicato dal fatto se avete installato delle versioni “for all users” o solo nel vostro user space, e se ci sono contemporaneamente presenti versioni “per tutti” e versioni “solo per voi”.
In pratica, è raccomandabile installare tutte le versioni di Python “for all users”, oppure tutte “solo per voi”; inoltre, è meglio inserirle comunque tutte nella path di sistema. Se in futuro doveste disinstallare una versione, siete sicuri che comunque le altre sono già nella path, e quindi python continuerà a funzionare in qualche modo (trovando un’altra versione).
In ogni caso, per essere sicuri di quale versione corrisponde il python di default sulla vostra macchina, basta… fare la prova! Fate comunque attenzione: quello che vale per voi potrebbe non valere su un’altra macchina. In generale, non potete essere sicuri che uno script Python che per voi funziona, continuerà a funzionare allo stesso modo ovunque: dipende da quali versioni di Python sono installate sulle altre macchine, e magari in quale ordine. La necessità di virtual environment complica ulteriormente le cose, come vedremo. In generale questo è un problema di pacchettizzazione e distribuzione del software Python, ed è troppo complesso per essere affrontato in questa guida. Torneremo comunque sull’argomento per alcune indicazioni di base.

Eseguire uno script Python.

Un conto è invocare la shell interattiva di Python, ma noi vogliamo anche poter eseguire uno script. Se avete diverse installazioni di Python compresenti, è importante sapere quale Python sta eseguendo il vostro script.
Per prima cosa dobbiamo creare un piccolo script di prova: aprite un nuovo file e chiamatelo test.py (attenzione all’estensione! Ricordate, dovete impostare Windows perché vi mostri sempre il nome completo dei file, estensione compresa). Potete metterlo dovunque, per il momento. Per evitare di scrivere troppo nella shell, è meglio fare in modo che abbia un indirizzo breve: per esempio, C:/test/test.py. Dentro il file scrivete solo queste poche righe:
import sys

print('sono eseguito da: ' + sys.executable)
Una nota per chi proprio non ha mai fatto queste cose: si dà per scontato che i programmi non si scrivono in Word! Dovete usare un editor di testo per questo. Ci sono molti editor “da programmatori”, e discuteremo alcune scelte possibili. Per il momento, se non avete altro, va benissimo anche solo il Blocco Note (ma solo per il momento, beninteso).
A dire il vero, gli esempi che dobbiamo scrivere sono talmente brevi che forse vi conviene scrivere direttamente il file dalla shell, con il comando copy, senza passare da un editor:
> cd c:/test
C:\test > copy con test.py
import sys
print('sono eseguito da: ' + sys.executable)
<CTRL+Z><INVIO>
Anche se non sapete programmare in Python, il significato di queste due righe è abbastanza chiaro: questo script semplicemente scrive nella shell l’indirizzo dell’interprete Python che lo sta eseguendo. Abbiamo scelto delle istruzioni che sono legali sia in Python 2 sia in Python 3, quindi potete eseguire lo script con qualsiasi versione di Python che avete installata.
Per eseguire uno script, semplicemente invocate l’interprete Python (preferibilmente attraverso il launcher) seguito dal nome dello script (o dal suo indirizzo per intero, se siete in una diversa directory di lavoro):
Facciamo qualche prova:
> cd c:/test
C:\test> py -2 test.py
sono eseguito da: C:\Python27\python.exe
C:\test> py -3 test.py
sono eseguito da: C:\Program Files\Python37\python.exe
C:\test> py test.py
sono eseguito da: C:\Program Files\Python37\python.exe
C:\test> python test.py
sono eseguito da: C:\Python27\python.exe
Se avete seguito fin qui, niente di tutto questo dovrebbe sorprendervi. Il launcher py con la versione specificata (py -2 o py -3) esegue lo script con la versione che avete indicato. Il launcher py senza nessuna specificazione utilizza la versione più recente. Infine, python usa la versione di default.

Specificare una versione di default anche per il launcher py.

Se lo invocate senza specificare nulla, allora il launcher userà la versione più recente tra quelle installate. Potete però definire una versione preferenziale per il launcher py, se volete. Per fare questo, dovete impostare la variabile d’ambiente PY_PYTHON.
Ecco come funziona:
C:\test> set PY_PYTHON=3
C:\test> py test.py
sono eseguito da: C:\Program Files\Python37\python.exe
C:\test> set PY_PYTHON=2
C:\test> py test.py
sono eseguito da: C:\Python27\python.exe
E d’altra parte:
> set PY_PYTHON=3
> py
Python 3.7.0 ([etc]) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
> set PY_PYTHON=2
> py
Python 2.7.15 ([etc]) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
Ci vuole un breve promemoria sulle variabili d’ambiente, a questo punto. Ricordiamo che il comando di shell set imposta una variabile d’ambiente solo nello spazio della shell corrente. In un’altra shell aperta contemporaneamente, la variabile non è visibile; e se chiudete la shell, la variabile sparisce. Per impostare una variabile d’ambiente in modo “definitivo” potete usare setx in una shell “privilegiata”, oppure naturalmente potete procedere dalle impostazioni di sistema. Potete esaminare il valore attuale di una variabile con un semplice echo, per esempio echo %PY_PYTHON%, oppure echo %PATH% etc.
Torniamo a Python. Come vedete, un py generico invoca la versione dettata da PY_PYTHON, se impostata, altrimenti la più recente. Non dovrebbe comunque mai essere necessario ricorrere a PY_PYTHON: come vedremo, gli script dovrebbero avere una “shebang”, ma in definitiva basta specificare la versione al momento di eseguire lo script con py.

Eseguire uno script con il doppio clic.

Questo non si dovrebbe mai fare, davvero. In Windows viene naturale “fare doppio clic” su qualcosa, ma gli script Python si dovrebbero avviare dalla shell. Solo in questo modo è possibile raccogliere l’output e gli eventuali messaggi d’errore, impostare la directory di lavoro ed eventuali variabili d’ambiente, e in definitiva capire quello che si sta facendo. Quindi abituatevi a tenere una shell aperta e a invocare i vostri script da quella. A maggior ragione, vedremo che l’uso dei virtual environment in pratica esclude la possibilità di usare il doppio clic.
Naturalmente gli utenti finali dei vostri programmi, in futuro, dovranno avere un entry point comodo da usare: qualcosa su cui “fare doppio clic”. Questo è possibile, ma è un aspetto di un problema completamente differente, quello della pacchettizzazione e distribuzione dei programmi Python. Per il momento, invece, ci occupiamo dell’ambiente di lavoro del programmatore.
Detto che voi dovreste usare la shell, è utile comunque sapere che cosa succede quando fate doppio clic sul file di uno script Python. Qui entrano in gioco le associazioni che Windows fa tra estensioni e programmi predefiniti (il meccanismo per cui quando fate doppio clic su un file .doc si apre Word). È importante far sapere a Windows che il programma predefinito per i file con estensione .py deve essere il launcher py, e non direttamente l’interprete python.exe.
È molto semplice verificarlo: se l’icona del file .py ha il disegno di un razzo stilizzato in overlay, allora il programma predefinito è il launcher.
Potrebbe succedere che i file .py non siano associati con il launcher? Purtroppo sì. Quando installate una versione di Python, i file .py possono venire associati al launcher solo se… esiste il launcher, naturalmente! Il launcher esiste solo dalla versione 3.3 in poi. Questo significa che, se installate una versione più vecchia, i file .py vengono associati direttamente all’interprete Python, “alla vecchia maniera”.
Ma c’è di peggio. Se installate una versione recente (che ha il launcher) e successivamente una versione più vecchia (che non ce l’ha) quest’ultima potrebbe sovrascrivere le associazioni già impostate dalla prima. Dovete stare attenti, in questi casi, a de-selezionare l’opzione “Register extensions” in fase di installazione (ricordate? Ne avevamo parlato sopra).
In ogni caso, se vi ritrovate con le associazioni sbagliate, potete sempre correggere nel solito modo: fate clic col pulsante destro sul vostro modulo test.py, scegliete “Apri con…”, e cambiate programma predefinito: eventualmente dovete “sfogliare” fino a individuare il launcher py.exe (che, se avete installato “for all users”, è in C:/windows/py.exe).
Se i file .py sono correttamente associati al launcher, allora fare doppio clic su un file script.py equivale a invocarlo dalla shell con > py script.py. Se volete fare una prova, vi conviene modificare il nostro script test.py in questo modo:
import sys
import time

print('Sono eseguito da: ' + sys.executable)

time.sleep(3)
Questo metterà “in pausa” lo script per 3 secondi, il tempo sufficiente a permettervi di leggere il messaggio prima di terminare e quindi chiudere automaticamente la finestra della shell (ve l’avevamo detto: gli script non si invocano con il doppio clic. Adesso cominciate a capire perché).
Torneremo ancora sull’idea di fare doppio clic per eseguire uno script Python, dopo aver imparato qualcosa di più sui virtual environment e sul meccanismo degli import.

Associare i file .py all’editor, invece.

Ecco un suggerimento che forse vi conviene seguire. Siccome non vi capiterà mai di eseguire uno script Python facendo doppio clic (perché userete sempre la shell), allora potreste chiedervi se non c’è un uso migliore per il doppio clic su un file .py.
Molti programmatori associano semplicemente l’estensione .py all’editor preferito. In questo caso, quando fate doppio clic su uno script, non lo eseguite ma lo aprite con l’editor per modificarlo. In questo momento voi non avete ancora scelto un editor “da programmatore”, ma quando succederà vi converrà tenere a mente questa possibilità. Dopo un po’, diventa più naturale associare il doppio clic al concetto di “modificare uno script”, e l’invocazione dalla shell al concetto di “eseguire uno script”. Se state seguendo questi appunti passo-passo, probabilmente vi sarete già accorti che aprire ogni volta il vostro test.py con il Blocco Note per modificarlo è un po’ complicato: e forse vi è già venuto in mente di associare .py al Blocco Note (notepad.exe) per fare più in fretta. Potete farlo per il momento, se volete: l’importante è che sia una cosa provvisoria. Non si usa il Blocco Note per programmare davvero.

I file .pyw.

Quando installate una versione di Python su Windows, avete a disposizione non una, ma due versioni dell’eseguibile dell’interprete: python.exe e pythonw.exe. Il primo è l’interprete che usate normalmente. Il secondo è identico al primo, tranne per il fatto che nasconde la finestra della shell.
Questo secondo interprete è chiaramente destinato agli utenti “normali” che devono eseguire un programma Python scritto da altri, e non saprebbero che farsene della finestra della shell aperta (certo, il programma dovrebbe avere una interfaccia grafica per comunicare con l’utente. Se invece il programma ha un’interfaccia testuale, allora la finestra della shell serve eccome!).
Come si fa a scegliere con quale dei due interpreti eseguire uno script? Se siete nella shell, ovviamente non è un problema: basta invocare > pythonw test.py (per il python di default). Ma esiste anche una versione “con la w” del launcher py, per cui potete invocare > pyw test.py o > pyw -2 test.py etc. Potete provarci: lo script viene eseguito, ma non potete vedere nessun output.
Chiaramente però non è questo lo scopo di pythonw.exe e pyw.exe. L’utente “normale” vuole fare doppio clic sul file dello script, come sappiamo. Per questo scenario, Windows registra un’estensione separata: .pyw invece di .py. In altre parole, vi basta modificare l’estensione del vostro file test.py in test.pyw, e Windows saprà che deve aprirlo con il launcher pyw.exe invece di py.exe. Valgono le stesse raccomandazioni fatte sopra per l’estensione .py: dovete controllare che .pyw sia effettivamente associato al launcher C:/Windows/pyw.exe, come descritto sopra.
Fatto questo, se volete testare il vostro script, vi conviene modificarlo ancora una volta, in questo modo:
import sys
import winsound

if 'Python27' in sys.executable:
    winsound.Beep(2000, 5000)
else:
    winsound.Beep(5000, 5000)
Siccome adesso non c’è un output scritto che potete vedere, questo script emette un tono più basso se viene eseguito da Python 2, e un tono più alto se viene eseguito da Python 3.

I file .pyc.

Occasionalmente vedrete dei file .pyc, con una icona leggermente diversa. Questi sono file Python pre-compilati per una esecuzione più veloce. Siccome contengono bytecode e non testo, non ha senso aprirli con l’editor. Potete associarli al launcher .py o all’interprete python.exe.

I file .pyz.

Questa possibilità esiste fin da Python 2.6, ma è stata potenziata e documentata meglio solo a partire da Python 3.5. In pratica è possibile comprimere i file degli script Python in archivi zip: l’interprete Python è in grado di eseguire anche questi archivi compressi. Se volete provare questa possibilità con il nostro breve script di test, potete fare così:
C:\test > py -m zipapp test.py -o test.pyz
C:\test > py test.pyz
La prima riga invoca il modulo zipapp della libreria standard per comprimere il nostro file di test; la seconda riga mostra che l’interprete Python è in grado di eseguire normalmente il file compresso risultante.
Ovviamente questa opzione ha più senso se volete comprimere una intera directory che contiene diversi script Python raccolti in un “progetto” (un’applicazione di qualche tipo). In questo modo potete distribuire il vostro lavoro come un singolo archivio compresso, che Python è in grado di eseguire senza bisogno di scompattarlo prima.
Se ritenete, potete associare i file .pyz al launcher .py o all’interprete python.exe.

Riassunto: che cosa vi conviene fare, in breve.

Queste note sono volutamente dettagliate, per farvi capire le opzioni possibili. Quello che vi conviene davvero fare, comunque, è in genere molto semplice:
  • Installate una versione di Python “recente” (preferibilmente 3.6 o 3.7), in modo che abbia il launcher .py. Possibilmente, installatela “for all users” e selezionate le opzioni di aggiungerla alla path di sistema e di registrare le estensioni.
  • Installate qualsiasi altra versione, se volete. Aggiungetela alla path di sistema, ma non registrate più le estensioni.
  • Controllate che le estensioni .py e .pyw siano associate ai launcher py.exe e pyw.exe. In ogni caso, potreste voler ri-associare i file .py al vostro editor preferito.
  • Per eseguire gli script, usate il launcher py dalla shell.
Se invece per qualche ragione volete installare solo Python 2, allora vi conviene:
  • Installare la versione più recente (Python 2.7), possibilmente “for all users”, aggiungendola alla path di sistema e registrando le estensioni.
  • Controllare che .py e .pyw siano associate a python.exe e pythonw.exe rispettivamente. In ogni caso, vi conviene ri-associare i file .py al vostro editor preferito.
  • Per eseguire gli script, invocate python script.py dalla shell.

Riassunto: come funziona py (e python) in breve.

Riassumiamo anche i diversi modi con cui si usa il launcher. Per adesso è molto semplice, ma vedremo che la situazione si complicherà leggermente con i virtual environments.
  • py non qualificato (senza indicare un numero di versione): usare py script.py avvia uno script con la versione più recente di Python (o quella impostata da PY_PYTHON). Usate semplicemente py per avviare la shell di quell’interprete.
  • py qualificato: usare per esempio py -2 script.py avvia lo script con una versione specifica di Python. py -2 avvia la shell dell’interprete specificato.
  • python: usare python script.py avvia lo script usando il Python “di default”, ovvero il primo interprete che Windows trova nella path di sistema (in genere, l’ultima versione che è stata installata). Un semplice python avvia la shell del Python di default.

Commenti

Post più popolari