3.3 Running Python Programs
Whatever
tools you use to produce your Python application, you can see your
application as a set of Python source files. A
script is a file that you can run directly. A
module is a file that you can import (as covered
in Chapter 7) to provide functionality to other
files or to interactive sessions. A Python file can be both a module
and a script, exposing functionality when imported, but also suitable
for being run directly. A useful and widespread convention is that
Python files that are primarily meant to be imported as modules, when
run directly, should execute self-test operations. Testing is covered
in Chapter 17.
The Python interpreter automatically compiles Python source files as
needed. Python source files normally have extension
.py. Python saves the compiled bytecode file for
each module in the same directory as the module's
source, with the same basename and extension
.pyc (or .pyo if Python is
run with option -O). Python does not save the
compiled bytecode form of a script when you run the script directly;
rather, Python recompiles the script each time you run it. Python
saves bytecode files only for modules you import. It automatically
rebuilds each module's bytecode file whenever
necessary, for example when you edit the module's
source. Eventually, for deployment, you may package Python modules
using tools covered in Chapter 26.
You can run Python code interactively, with the Python
interpreter or an IDE. Normally, however, you
initiate execution by running a top-level script. To run a script,
you give its path as an argument to python, as
covered earlier in this chapter. Depending on your operating system,
you can invoke python directly, from a shell
script, or in a command file. On Unix-like systems, you can make a
Python script directly executable by setting the
file's permission bits x and
r and beginning the script with a so-called
shebang line, which is a first line of the
form:
#!/usr/bin/env python {options}
providing a path to the python
program.
On Windows, you can associate file extensions
.py, .pyc, and
.pyo with the Python interpreter in the Windows
registry. Most Python versions for Windows perform this association
when installed. You can then run Python scripts with the usual
Windows mechanisms, such as double-clicking on their icons. On
Windows, when you run a Python script by double-clicking on the
script's icon, Windows automatically closes the
text-mode console associated with the script as soon as the script
terminates. If you want the console to linger in order to allow the
user to read the script's output on the screen, you
need to ensure the script doesn't terminate too
soon, for example by using the following as the
script's last statement:
raw_input('Press Enter to terminate')
This is not necessary when you run the script from a pre-existing
console (also known as a MS-DOS Prompt or Command Prompt window).
On Windows, you can also use extension .pyw and
interpreter program pythonw.exe instead of
.py and python.exe. The
w variants run Python without a text-mode
console, and thus without standard input and output. These variants
are appropriate for scripts that rely on GUIs. You normally use them
only when the script is fully debugged, to keep standard output and
error available for information, warnings, and error messages during
development.
Applications coded in other languages may embed Python, controlling
the execution of Python code for their own purposes. We examine this
subject further in Chapter 24.
|