Come compilare un file Python?


57

Ho iniziato a studiare Python e sono anche un nuovo utente di Ubuntu. Ho bisogno di sapere come compilare i .pyfile. Ho provato con il comando

python "hello.py"

Quali sono gli altri modi di compilare Python?

Risposte:


58

Aggiungendo alla risposta di Bryan, se si desidera semplicemente compilare un file o un gruppo di file da un terminale, il py_compilemodulo può essere eseguito come uno script nel modo seguente:

python -m py_compile fileA.py fileB.py fileC.py ...


9
Se stai compilando perché vuoi la velocità, puoi anche aggiungere il -Oflag, come python -O -m py_compile …, che "accenderà le ottimizzazioni di base". Elimina principalmente le assertistruzioni e il if __debug__codice, quindi per la maggior parte del codice non ha alcun effetto. Vedi man pythone "Cosa fa l'ottimizzazione di Python ...?" Per i dettagli.
Rory O'Kane,

26

Inoltre, tieni presente che non è necessario compilare un .pyfile per eseguirlo. Python è un linguaggio interpretato e puoi eseguire direttamente gli script, usando:

python hello.py

Oppure rendi eseguibile il tuo script aggiungendolo #!/usr/bin/env pythonnella parte superiore dello script, rendendo il file eseguibile chmod +x hello.pye quindi eseguendo:

./hello.py

Il fatto che Python compili internamente lo .pyscript in .pycfile bytecode per motivi di prestazioni è un dettaglio dell'implementazione e, a meno che tu non abbia un motivo valido per farlo, lascia che Python stesso decida quando e se compilare.


Sono confuso sul perché funziona. L'interprete Python non deve essere in grado di leggere lo script per eseguirlo? Se dai solo il permesso di esecuzione ( chmod +x), come fa l'interprete a leggere lo script?
yellow01

@ yellow01: quando si esegue uno script che contiene un "shebang", ovvero la prima riga inizia con #!/path/to/interpreter, il kernel esegue effettivamente tutto ciò che viene dichiarato lì, passando il percorso dello script come argomento. Nel mio esempio, quando si esegue ./hello.pyciò che viene effettivamente eseguito è /usr/bin/env python ./hello.py. Vedi en.wikipedia.org/wiki/Shebang_(Unix)
MestreLion

@ yellow01 hai ragione quando l'interprete avrà bisogno dei permessi di lettura una volta avviato attraverso il processo descritto da MestreLion. Tuttavia, le chmod +xsovvenzioni vengono eseguite e non toccano le autorizzazioni esistenti, quindi presumibilmente è leggibile oltre a essere ora eseguibile.
extra l'

11

Dai un'occhiata a questo link Compila in Python

Nel mezzo della pagina, parla del modulo py_compile che può essere importato. La sintassi è la seguente:

import py_compile

py_compile.compile("file.py")

Questo metodo di compilazione non eseguirà il modulo come nell'esecuzione di python file.py.

C'è anche un metodo che compila un intero albero di directory ma ti lascerò controllare il link per vedere come viene eseguito.

Spero che sia di aiuto.



4

Puoi compilare gli script Python in un codice binario usando vari metodi, ma ho scoperto che usare Nuitka è più efficiente.

Nuitka è un compilatore da Python a C ++ che supporta quasi tutte le versioni di Python.

La sintassi del comando è semplice come

nuitka hello.py

Vai a http://nuitka.net/doc/user-manual.html per ulteriori informazioni.


6
Più efficiente come? Perché qualcuno dovrebbe usarlo?
Muru,

nuitka è davvero molto utile - ad esempio, ti permette di spedire i programmi Python su computer dove Python non è installato. Ma mentre nuitka compila i programmi Python in codice macchina C ++, puoi aggirare quello.
user258532
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.