Вы находитесь на странице: 1из 2

Compiled Python files

As an important speed-up of the start-up time for short programs that use a lot
of standard modules, if a file called spam.pyc exists in the directory where spa
m.py is found, this is assumed to contain an already- byte-compiled version of the
module spam. The modification time of the version of spam.py used to create spam
.pyc is recorded in spam.pyc, and the .pyc file is ignored if these don t match.
Normally, you don t need to do anything to create the spam.pyc file. Whenever spam
.py is successfully compiled, an attempt is made to write the compiled version t
o spam.pyc. It is not an error if this attempt fails; if for any reason the file
is not written completely, the resulting spam.pyc file will be recognized as in
valid and thus ignored later. The contents of the spam.pyc file are platform ind
ependent, so a Python module directory can be shared by machines of different ar
chitectures.
Some tips for experts:
When the Python interpreter is invoked with the -O flag, optimized code is gener
ated and stored in .pyo files. The optimizer currently doesn t help much; it only
removes assert statements. When -O is used, all bytecode is optimized; .pyc file
s are ignored and .py files are compiled to optimized bytecode.
Passing two -O flags to the Python interpreter (-OO) will cause the
piler to perform optimizations that could in some rare cases result
oning programs. Currently only __doc__ strings are removed from the
sulting in more compact .pyo files. Since some programs may rely on
available, you should only use this option if you know what you re

bytecode com
in malfuncti
bytecode, re
having these
doing.

A program doesn t run any faster when it is read from a .pyc or .pyo file than whe
n it is read from a .py file; the only thing that s faster about .pyc or .pyo file
s is the speed with which they are loaded.
When a script is run by giving its name on the command line, the bytecode for th
e script is never written to a .pyc or .pyo file. Thus, the startup time of a sc
ript may be reduced by moving most of its code to a module and having a small bo
otstrap script that imports that module. It is also possible to name a .pyc or .
pyo file directly on the command line.
It is possible to have a file called spam.pyc (or spam.pyo when -O is used) with
out a file spam.py for the same module. This can be used to distribute a library
of Python code in a form that is moderately hard to reverse engineer.
The module compileall can create .pyc files (or .pyo files when -O is used) for
all modules in a directory.
6.2. Standard Modules
Python comes with a library of standard modules, described in a separate documen
t, the Python Library Reference ( Library Reference hereafter). Some modules are bu
ilt into the interpreter; these provide access to operations that are not part o
f the core of the language but are nevertheless built in, either for efficiency
or to provide access to operating system primitives such as system calls. The se
t of such modules is a configuration option which also depends on the underlying
platform. For example, the winreg module is only provided on Windows systems. O
ne particular module deserves some attention: sys, which is built into every Pyt
hon interpreter. The variables sys.ps1 and sys.ps2 define the strings used as pr
imary and secondary prompts:
>>> import sys
>>> sys.ps1
'>>> '

>>> sys.ps2
'... '
>>> sys.ps1 = 'C> '
C> print 'Yuck!'
Yuck!
C>
These two variables are only defined if the interpreter is in interactive mode.
The variable sys.path is a list of strings that determines the interpreter s searc
h path for modules. It is initialized to a default path taken from the environme
nt variable PYTHONPATH, or from a built-in default if PYTHONPATH is not set. You
can modify it using standard list operations:
>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

Вам также может понравиться