blob: e550e52ad807a413c9cef994da690635c19052c6 [file] [log] [blame]
Guido van Rossum02840fd1997-08-28 14:32:14 +00001"""Hook to allow user-specified customization code to run.
2
3As a policy, Python doesn't run user-specified code on startup of
4Python programs (interactive sessions execute the script specified in
Guido van Rossumbf453222000-03-30 15:00:33 +00005the PYTHONSTARTUP environment variable if it exists).
Guido van Rossum02840fd1997-08-28 14:32:14 +00006
7However, some programs or sites may find it convenient to allow users
8to have a standard customization file, which gets run when a program
9requests it. This module implements such a mechanism. A program
Guido van Rossum625f40d1997-08-30 20:04:42 +000010that wishes to use the mechanism must execute the statement
Guido van Rossum02840fd1997-08-28 14:32:14 +000011
12 import user
13
14The user module looks for a file .pythonrc.py in the user's home
15directory and if it can be opened, execfile()s it in its own global
16namespace. Errors during this phase are not caught; that's up to the
17program that imports the user module, if it wishes.
18
19The user's .pythonrc.py could conceivably test for sys.version if it
20wishes to do different things depending on the Python version.
21
22"""
23
24import os
25
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000026home = os.curdir # Default
Raymond Hettinger54f02222002-06-01 14:18:47 +000027if 'HOME' in os.environ:
Guido van Rossum02840fd1997-08-28 14:32:14 +000028 home = os.environ['HOME']
Neal Norwitz609ba812002-09-05 21:08:25 +000029elif os.name == 'posix':
30 home = os.path.expanduser("~/")
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000031elif os.name == 'nt': # Contributed by Jeff Bauer
Raymond Hettinger54f02222002-06-01 14:18:47 +000032 if 'HOMEPATH' in os.environ:
33 if 'HOMEDRIVE' in os.environ:
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000034 home = os.environ['HOMEDRIVE'] + os.environ['HOMEPATH']
35 else:
36 home = os.environ['HOMEPATH']
Guido van Rossum02840fd1997-08-28 14:32:14 +000037
38pythonrc = os.path.join(home, ".pythonrc.py")
39try:
40 f = open(pythonrc)
41except IOError:
42 pass
43else:
44 f.close()
45 execfile(pythonrc)