2010-05-23 10 views
10

Desidero sapere che cos'è un file pyc (python bytecode). Voglio sapere tutti i dettagli. Voglio sapere come i file pyc si interfacciano con il compilatore. È un sostituto di exe? Ha bisogno di essere eseguito da python? È portatile come il file .py? Dove dovrei usare questo?Dove utilizzare un file pyc

risposta

15

Per completare la risposta di Mike Graham, ci sono alcuni commenti interessanti here che forniscono alcune informazioni sui file pyc. Più interessante Ho il sospetto che per voi è la linea:

Un programma non viene eseguito più velocemente quando viene letto da un file '.pyc' o '.pyo' rispetto a quando viene letto da un' .py ' file; l'unica cosa che è più veloce nei file ".pyc" o ".pyo" è la velocità con cui vengono caricati.

Che colpisce il chiodo sulla testa w.r.t. il punto cruciale di un file pyc. A pyc è un file py pre-interpretato. Il bytecode python è ancora lo stesso come se fosse stato generato da un file py - la differenza è che quando si utilizza un file pyc non è necessario passare attraverso il processo di creazione di tale output pyc (che si esegue quando si esegue un file py). Leggi come non devi convertire lo script python in bytecode python.

Se hai trovato file .class in java questo è un concetto simile: la differenza è in java che devi eseguire la compilazione utilizzando javac prima che l'interprete java esegua l'applicazione. Un modo diverso di fare le cose (gli interni saranno molto diversi in quanto sono lingue diverse) ma la stessa ampia idea.

9

Python bytecode richiede l'esecuzione di Python, non può essere eseguito in modalità standalone senza Python ed è specifico per una particolare versione x.y di Python. Dovrebbe essere portatile su piattaforme per la stessa versione. Non c'è un motivo comune per usarlo; Python lo usa per ottimizzare l'analisi del tuo file .py su importazioni ripetute. La tua vita andrà bene ignorando l'esistenza dei file pyc.

6

Dal docs:

Come un importante accelerazione del tempo di start-up per brevi programmi che usano un sacco di moduli standard, se un file chiamato spam.pyc esiste nella directory in cui lo spam .py è stato trovato, si presume che contenga una versione già "byte-compilata" del modulo spam. Il tempo di modifica della versione di spam.py utilizzato per creare spam.pyc è registrato in spam.pyc e il file .pyc viene ignorato se questi non corrispondono.

Vedere il riferimento per ulteriori informazioni. Ma alcune risposte specifiche:

I contenuti del file spam.pyc sono indipendenti dalla piattaforma, quindi una directory di moduli Python può essere condivisa da macchine di architetture diverse.

È non un file eseguibile; è utilizzato internamente dal compilatore come passaggio intermedio.

In generale, non si creano file .pyc a mano: l'interprete li fa automaticamente.

Problemi correlati