[PIPython] [bios21@inwind.it: python compiler...]

Alex Martelli aleaxit
Ven 19 Nov 2004 15:16:40 CET


--- Giuseppe Masili <giuseppe a linux.it> wrote:
> ----- Forwarded message from "bios21 a inwind.it" <bios21 a inwind.it>
   ...
> solo da poco ho scoperto il linguaggio Python per motivi di lavoro.
> Vorrei sapere come si fa a compilare uno script.py in bytecode
> (.pyc)? Puoi per favore farmi sapere ???

Un foo.py viene automaticamente compilato, producendo un foo.pyc,
quando Python incontra un'istruzione di import che lo riguarda,
tipicamente un "import foo" (purche` foo.py sia in un directory
scrivibile dall'utente corrente, ecc, ecc).

Un "programma principale", cioe` un foo.py che viene eseguito
direttamente con "python foo.py" o simili, non produce un file
foo.pyc (Python produce comunque il bytecode, ma non lo persiste
su disco).  Comunque, basta un 
    python -c "import foo"
per causare la generazione del foo.pyc a partire dal foo.py (a
patto ovviamente che foo.py sia su un directory di sys.path, ad
esempio nella directory corrente).  Naturalmente l'esistenza di
quel foo.pyc non ha alcuna rilevanza se in futuro tu dovessi di
nuovo eseguire un "python foo.py" (nominando esplicitamente il
file sorgente), ma potresti volere il foo.pyc per qualche altro
scopo, oppure anche voler eseguire "python foo.pyc" (non e` un
uso molto comune, ma non e` proibito).

Di solito, quello che si fa invece e` di tenere lo "script
principale" foo.py piccolo ed elementare, cosi` che il fatto
che sia compilato o meno non ha nessuna importanza pratica,
e porre tutta la funzionalita` interessante in un modulo da
importare (tipicamente quello che non e` utilmente ponibile
in altre funzioni si pone in una chiamata 'main').  Cosi`
il foo.py puo` ridursi ad esempio a:
    import verofoo
    verofoo.main()
e la funzionalita` in verofoo.py (che viene implicitamente
compilato all'import) e` pronta per il riuso eventuale in
altri ambiti...


Alex




More information about the Python mailing list