As a policy, Python doesn't run user-specified code on startup of
Python programs. (Only interactive sessions execute the script
specified in the PYTHONSTARTUP environment variable if it
exists).
However, some programs or sites may find it convenient to allow users
to have a standard customization file, which gets run when a program
requests it. This module implements such a mechanism. A program
that wishes to use the mechanism must execute the statement
import user
The user module looks for a file .pythonrc.py in the user's
home directory and if it can be opened, executes it (using
execfile()) in its own (the
module user's) global namespace. Errors during this phase
are not caught; that's up to the program that imports the
user module, if it wishes. The home directory is assumed to
be named by the HOME environment variable; if this is not set,
the current directory is used.
The user's .pythonrc.py could conceivably test for
sys.version if it wishes to do different things depending on
the Python version.
A warning to users: be very conservative in what you place in your
.pythonrc.py file. Since you don't know which programs will
use it, changing the behavior of standard modules or functions is
generally not a good idea.
A suggestion for programmers who wish to use this mechanism: a simple
way to let users specify options for your package is to have them
define variables in their .pythonrc.py file that you test in
your module. For example, a module spam that has a verbosity
level can look for a variable user.spam_verbose, as follows:
import user
verbose = bool(getattr(user, "spam_verbose", 0))
(The three-argument form of getattr() is used in case
the user has not defined spam_verbose in their
.pythonrc.py file.)
Programs with extensive customization needs are better off reading a
program-specific customization file.
Programs with security or privacy concerns should not import
this module; a user can easily break into a program by placing
arbitrary code in the .pythonrc.py file.
Modules for general use should not import this module; it may
interfere with the operation of the importing program.