Mercurial > cpython-lru_cache-weakref
annotate Lib/site.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 3c9232a684ae |
| children | a364719e400a |
| rev | line source |
|---|---|
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
1 """Append module search paths for third-party packages to sys.path. |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
2 |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
3 **************************************************************** |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
4 * This module is automatically imported during initialization. * |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
5 **************************************************************** |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
6 |
| 30723 | 7 This will append site-specific paths to the module search path. On |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
8 Unix (including Mac OSX), it starts with sys.prefix and |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
9 sys.exec_prefix (if different) and appends |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
10 lib/python<version>/site-packages as well as lib/site-python. |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
11 On other platforms (such as Windows), it tries each of the |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
12 prefixes directly, as well as with lib/site-packages appended. The |
|
6267
eb8d1a098b9d
Change packages -> site-packages
Guido van Rossum <guido@python.org>
parents:
6231
diff
changeset
|
13 resulting directories, if they exist, are appended to sys.path, and |
|
eb8d1a098b9d
Change packages -> site-packages
Guido van Rossum <guido@python.org>
parents:
6231
diff
changeset
|
14 also inspected for path configuration files. |
| 4010 | 15 |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
16 A path configuration file is a file whose name has the form |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
17 <package>.pth; its contents are additional directories (one per line) |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
18 to be added to sys.path. Non-existing directories (or |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
19 non-directories) are never added to sys.path; no directory is added to |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
20 sys.path more than once. Blank lines and lines beginning with |
|
21450
fa0bde3c86b2
Don't use Latex \code{...} in docstrings.
Guido van Rossum <guido@python.org>
parents:
21449
diff
changeset
|
21 '#' are skipped. Lines starting with 'import' are executed. |
| 4010 | 22 |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
23 For example, suppose sys.prefix and sys.exec_prefix are set to |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
24 /usr/local and there is a directory /usr/local/lib/python2.5/site-packages |
|
6267
eb8d1a098b9d
Change packages -> site-packages
Guido van Rossum <guido@python.org>
parents:
6231
diff
changeset
|
25 with three subdirectories, foo, bar and spam, and two path |
|
eb8d1a098b9d
Change packages -> site-packages
Guido van Rossum <guido@python.org>
parents:
6231
diff
changeset
|
26 configuration files, foo.pth and bar.pth. Assume foo.pth contains the |
|
eb8d1a098b9d
Change packages -> site-packages
Guido van Rossum <guido@python.org>
parents:
6231
diff
changeset
|
27 following: |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
28 |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
29 # foo package configuration |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
30 foo |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
31 bar |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
32 bletch |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
33 |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
34 and bar.pth contains: |
| 4010 | 35 |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
36 # bar package configuration |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
37 bar |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
38 |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
39 Then the following directories are added to sys.path, in this order: |
| 4010 | 40 |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
41 /usr/local/lib/python2.5/site-packages/bar |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
42 /usr/local/lib/python2.5/site-packages/foo |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
43 |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
44 Note that bletch is omitted because it doesn't exist; bar precedes foo |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
45 because bar.pth comes alphabetically before foo.pth; and spam is |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
46 omitted because it is not mentioned in either path configuration file. |
| 4010 | 47 |
| 48 After these path manipulations, an attempt is made to import a module | |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
49 named sitecustomize, which can perform arbitrary additional |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
50 site-specific customizations. If this import fails with an |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
51 ImportError exception, it is silently ignored. |
| 4010 | 52 |
| 53 """ | |
| 54 | |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
55 import sys |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
56 import os |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
57 import builtins |
|
67144
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
58 import traceback |
| 4010 | 59 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
60 # Prefixes for site-packages; add additional prefixes like /usr/local here |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
61 PREFIXES = [sys.prefix, sys.exec_prefix] |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
62 # Enable per user site-packages directory |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
63 # set it to False to disable the feature or True to force the feature |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
64 ENABLE_USER_SITE = None |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
65 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
66 # for distutils.commands.install |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
67 # These values are initialized by the getuserbase() and getusersitepackages() |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
68 # functions, through the main() function when Python starts. |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
69 USER_SITE = None |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
70 USER_BASE = None |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
71 |
|
16949
09ba15ee1961
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16050
diff
changeset
|
72 |
|
14911
af8d77aa90f8
Convert all entries on sys.path to absolute paths, and also update the
Fred Drake <fdrake@acm.org>
parents:
14658
diff
changeset
|
73 def makepath(*paths): |
|
65230
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
74 dir = os.path.join(*paths) |
|
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
75 try: |
|
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
76 dir = os.path.abspath(dir) |
|
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
77 except OSError: |
|
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
78 pass |
|
18364
2e1adbe89e4a
Avoid using os.path.normcase() on sys.path elements; doing so causes paths
Fred Drake <fdrake@acm.org>
parents:
18090
diff
changeset
|
79 return dir, os.path.normcase(dir) |
|
14911
af8d77aa90f8
Convert all entries on sys.path to absolute paths, and also update the
Fred Drake <fdrake@acm.org>
parents:
14658
diff
changeset
|
80 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
81 |
| 60648 | 82 def abs_paths(): |
| 83 """Set all module __file__ and __cached__ attributes to an absolute path""" | |
|
41759
edb4c9028be0
Protect abs__file__() from changes to sys.modules while it's running.
Guido van Rossum <guido@python.org>
parents:
41645
diff
changeset
|
84 for m in set(sys.modules.values()): |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37045
diff
changeset
|
85 if hasattr(m, '__loader__'): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37045
diff
changeset
|
86 continue # don't mess with a PEP 302-supplied __file__ |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
87 try: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
88 m.__file__ = os.path.abspath(m.__file__) |
|
65230
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
89 except (AttributeError, OSError): |
|
61731ec9a048
Merged revisions 85386-85387,85389 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59865
diff
changeset
|
90 pass |
| 60648 | 91 try: |
| 92 m.__cached__ = os.path.abspath(m.__cached__) | |
|
65226
ded61e26b841
Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64349
diff
changeset
|
93 except (AttributeError, OSError): |
| 60648 | 94 pass |
|
14911
af8d77aa90f8
Convert all entries on sys.path to absolute paths, and also update the
Fred Drake <fdrake@acm.org>
parents:
14658
diff
changeset
|
95 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
96 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
97 def removeduppaths(): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
98 """ Remove duplicate entries from sys.path along with making them |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
99 absolute""" |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
100 # This ensures that the initial path provided by the interpreter contains |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
101 # only absolute pathnames, even if we're running from the build directory. |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
102 L = [] |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
103 known_paths = set() |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
104 for dir in sys.path: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
105 # Filter out duplicate paths (on case-insensitive file systems also |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
106 # if they only differ in case); turn relative paths into absolute |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
107 # paths. |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
108 dir, dircase = makepath(dir) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
109 if not dircase in known_paths: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
110 L.append(dir) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
111 known_paths.add(dircase) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
112 sys.path[:] = L |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
113 return known_paths |
|
14911
af8d77aa90f8
Convert all entries on sys.path to absolute paths, and also update the
Fred Drake <fdrake@acm.org>
parents:
14658
diff
changeset
|
114 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
115 |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
116 def _init_pathinfo(): |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
117 """Return a set containing all existing directory entries from sys.path""" |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
118 d = set() |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
119 for dir in sys.path: |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
120 try: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
121 if os.path.isdir(dir): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
122 dir, dircase = makepath(dir) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
123 d.add(dircase) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
124 except TypeError: |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
125 continue |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
126 return d |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
127 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
128 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
129 def addpackage(sitedir, name, known_paths): |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41759
diff
changeset
|
130 """Process a .pth file within the site-packages directory: |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41759
diff
changeset
|
131 For each line in the file, either combine it with sitedir to a path |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41759
diff
changeset
|
132 and add that to known_paths, or execute it if it starts with 'import '. |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41759
diff
changeset
|
133 """ |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
134 if known_paths is None: |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
135 _init_pathinfo() |
|
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
136 reset = 1 |
|
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
137 else: |
|
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
138 reset = 0 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
139 fullname = os.path.join(sitedir, name) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
140 try: |
|
32766
d15517f2abe8
Fix bug in addsitedir() to properly handle the lack of a second argument.
Brett Cannon <bcannon@gmail.com>
parents:
32566
diff
changeset
|
141 f = open(fullname, "rU") |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
142 except IOError: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
143 return |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
144 with f: |
|
67144
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
145 for n, line in enumerate(f): |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
146 if line.startswith("#"): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
147 continue |
|
67144
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
148 try: |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
149 if line.startswith(("import ", "import\t")): |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
150 exec(line) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
151 continue |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
152 line = line.rstrip() |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
153 dir, dircase = makepath(sitedir, line) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
154 if not dircase in known_paths and os.path.exists(dir): |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
155 sys.path.append(dir) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
156 known_paths.add(dircase) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
157 except Exception as err: |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
158 print("Error processing line {:d} of {}:\n".format(n+1, fullname), |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
159 file=sys.stderr) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
160 for record in traceback.format_exception(*sys.exc_info()): |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
161 for line in record.splitlines(): |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
162 print(' '+line, file=sys.stderr) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
163 print("\nRemainder of file ignored", file=sys.stderr) |
|
e20a6436a927
Merged revisions 87497 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
65230
diff
changeset
|
164 break |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
165 if reset: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
166 known_paths = None |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
167 return known_paths |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
168 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
169 |
|
32566
3aadfc3fc4e6
Change argument list for addsitedir() to not require a second argument and thus
Brett Cannon <bcannon@gmail.com>
parents:
32528
diff
changeset
|
170 def addsitedir(sitedir, known_paths=None): |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
171 """Add 'sitedir' argument to sys.path if missing and handle .pth files in |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
172 'sitedir'""" |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
173 if known_paths is None: |
|
32766
d15517f2abe8
Fix bug in addsitedir() to properly handle the lack of a second argument.
Brett Cannon <bcannon@gmail.com>
parents:
32566
diff
changeset
|
174 known_paths = _init_pathinfo() |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
175 reset = 1 |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
176 else: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
177 reset = 0 |
|
18364
2e1adbe89e4a
Avoid using os.path.normcase() on sys.path elements; doing so causes paths
Fred Drake <fdrake@acm.org>
parents:
18090
diff
changeset
|
178 sitedir, sitedircase = makepath(sitedir) |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
179 if not sitedircase in known_paths: |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
7077
diff
changeset
|
180 sys.path.append(sitedir) # Add path component |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
181 try: |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
7077
diff
changeset
|
182 names = os.listdir(sitedir) |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
183 except os.error: |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
7077
diff
changeset
|
184 return |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
185 names = [name for name in names if name.endswith(".pth")] |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
186 for name in sorted(names): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
187 addpackage(sitedir, name, known_paths) |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
188 if reset: |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
189 known_paths = None |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
190 return known_paths |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
191 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
192 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
193 def check_enableusersite(): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
194 """Check if user site directory is safe for inclusion |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
195 |
|
47066
31cc8e1a8fdf
Merged revisions 62954-62959,62961,62963-62967,62969-62970,62972-62973,62975-62976,62978-62982,62984,62987-62996 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
47063
diff
changeset
|
196 The function tests for the command line flag (including environment var), |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
197 process uid/gid equal to effective uid/gid. |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
198 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
199 None: Disabled for security reasons |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
200 False: Disabled by user (command line option) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
201 True: Safe and enabled |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
202 """ |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
203 if sys.flags.no_user_site: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
204 return False |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
205 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
206 if hasattr(os, "getuid") and hasattr(os, "geteuid"): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
207 # check process uid == effective uid |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
208 if os.geteuid() != os.getuid(): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
209 return None |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
210 if hasattr(os, "getgid") and hasattr(os, "getegid"): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
211 # check process gid == effective gid |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
212 if os.getegid() != os.getgid(): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
213 return None |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
214 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
215 return True |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
216 |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
217 def getuserbase(): |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
218 """Returns the `user base` directory path. |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
219 |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
220 The `user base` directory can be used to store data. If the global |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
221 variable ``USER_BASE`` is not initialized yet, this function will also set |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
222 it. |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
223 """ |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
224 global USER_BASE |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
225 if USER_BASE is not None: |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
226 return USER_BASE |
|
58558
5aa90248a99f
Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
55708
diff
changeset
|
227 from sysconfig import get_config_var |
|
5aa90248a99f
Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
55708
diff
changeset
|
228 USER_BASE = get_config_var('userbase') |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
229 return USER_BASE |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
230 |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
231 def getusersitepackages(): |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
232 """Returns the user-specific site-packages directory path. |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
233 |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
234 If the global variable ``USER_SITE`` is not initialized yet, this |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
235 function will also set it. |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
236 """ |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
237 global USER_SITE |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
238 user_base = getuserbase() # this will also set USER_BASE |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
239 |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
240 if USER_SITE is not None: |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
241 return USER_SITE |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
242 |
|
58558
5aa90248a99f
Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
55708
diff
changeset
|
243 from sysconfig import get_path |
|
5aa90248a99f
Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
55708
diff
changeset
|
244 import os |
|
61403
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
245 |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
246 if sys.platform == 'darwin': |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
247 from sysconfig import get_config_var |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
248 if get_config_var('PYTHONFRAMEWORK'): |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
249 USER_SITE = get_path('purelib', 'osx_framework_user') |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
250 return USER_SITE |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
251 |
|
58558
5aa90248a99f
Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
55708
diff
changeset
|
252 USER_SITE = get_path('purelib', '%s_user' % os.name) |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
253 return USER_SITE |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
254 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
255 def addusersitepackages(known_paths): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
256 """Add a per user site-package to sys.path |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
257 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
258 Each user has its own python directory with site-packages in the |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
259 home directory. |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
260 """ |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
261 # get the per user site-package path |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
262 # this call will also make sure USER_BASE and USER_SITE are set |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
263 user_site = getusersitepackages() |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
264 |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
265 if ENABLE_USER_SITE and os.path.isdir(user_site): |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
266 addsitedir(user_site, known_paths) |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
267 return known_paths |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
268 |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
269 def getsitepackages(): |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
270 """Returns a list containing all global site-packages directories |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
271 (and possibly site-python). |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
272 |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
273 For each directory present in the global ``PREFIXES``, this function |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
274 will find its `site-packages` subdirectory depending on the system |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
275 environment, and will return a list of full paths. |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
276 """ |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
277 sitepackages = [] |
|
62566
504c499e8c95
Merged revisions 81465-81466,81468,81679,81735,81760,81868,82183 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
61403
diff
changeset
|
278 seen = set() |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
279 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
280 for prefix in PREFIXES: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
281 if not prefix or prefix in seen: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
282 continue |
|
62566
504c499e8c95
Merged revisions 81465-81466,81468,81679,81735,81760,81868,82183 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
61403
diff
changeset
|
283 seen.add(prefix) |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
284 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
285 if sys.platform in ('os2emx', 'riscos'): |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
286 sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
287 elif os.sep == '/': |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
288 sitepackages.append(os.path.join(prefix, "lib", |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
289 "python" + sys.version[:3], |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
290 "site-packages")) |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
291 sitepackages.append(os.path.join(prefix, "lib", "site-python")) |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
292 else: |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
293 sitepackages.append(prefix) |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
294 sitepackages.append(os.path.join(prefix, "lib", "site-packages")) |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
295 if sys.platform == "darwin": |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
296 # for framework builds *only* we add the standard Apple |
|
52497
0d62cc5b48d5
Merged revisions 70778 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
47066
diff
changeset
|
297 # locations. |
|
61403
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
298 from sysconfig import get_config_var |
|
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
299 framework = get_config_var("PYTHONFRAMEWORK") |
|
63413
5ee3e2712d7d
Ensure that test_site actually passes with a framework build
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
62566
diff
changeset
|
300 if framework: |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
301 sitepackages.append( |
|
61403
3fae7cb49209
Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
60648
diff
changeset
|
302 os.path.join("/Library", framework, |
|
52497
0d62cc5b48d5
Merged revisions 70778 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
47066
diff
changeset
|
303 sys.version[:3], "site-packages")) |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
304 return sitepackages |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
305 |
|
55708
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
306 def addsitepackages(known_paths): |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
307 """Add site-packages (and possibly site-python) to sys.path""" |
|
86ef74c4ad97
Merged revisions 74526 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52497
diff
changeset
|
308 for sitedir in getsitepackages(): |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
309 if os.path.isdir(sitedir): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
310 addsitedir(sitedir, known_paths) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
311 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
312 return known_paths |
|
18783
ac13a6ce13e2
Make the add*() helper functions more robust for use after intialization
Fred Drake <fdrake@acm.org>
parents:
18771
diff
changeset
|
313 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
314 def setBEGINLIBPATH(): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
315 """The OS/2 EMX port has optional extension modules that do double duty |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
316 as DLLs (and must use the .DLL file extension) for other extensions. |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
317 The library search path needs to be amended so these will be found |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
318 during module import. Use BEGINLIBPATH so that these are at the start |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
319 of the library search path. |
|
32528
67539cfcf09f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
32246
diff
changeset
|
320 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
321 """ |
|
31065
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
322 dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload") |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
323 libpath = os.environ['BEGINLIBPATH'].split(';') |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
324 if libpath[-1]: |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
325 libpath.append(dllpath) |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
326 else: |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
327 libpath[-1] = dllpath |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
328 os.environ['BEGINLIBPATH'] = ';'.join(libpath) |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
329 |
|
41f4ce6c4e50
To find the curses extension as a DLL (on OS/2), we need to adjust the
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
30723
diff
changeset
|
330 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
331 def setquit(): |
|
60570
7a390eb50df1
Merged revisions 80022 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60058
diff
changeset
|
332 """Define new builtins 'quit' and 'exit'. |
|
7a390eb50df1
Merged revisions 80022 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60058
diff
changeset
|
333 |
|
7a390eb50df1
Merged revisions 80022 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60058
diff
changeset
|
334 These are objects which make the interpreter exit when called. |
|
7a390eb50df1
Merged revisions 80022 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60058
diff
changeset
|
335 The repr of each object contains a hint at how it works. |
|
8878
813f527f3bec
Add built-in string variables 'quit' and 'exit' that display a hint on
Guido van Rossum <guido@python.org>
parents:
7755
diff
changeset
|
336 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
337 """ |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
338 if os.sep == ':': |
|
36922
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
339 eof = 'Cmd-Q' |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
340 elif os.sep == '\\': |
|
36922
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
341 eof = 'Ctrl-Z plus Return' |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
342 else: |
|
36922
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
343 eof = 'Ctrl-D (i.e. EOF)' |
|
36937
df43c04d2554
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
36922
diff
changeset
|
344 |
|
36922
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
345 class Quitter(object): |
|
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
346 def __init__(self, name): |
|
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
347 self.name = name |
|
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
348 def __repr__(self): |
|
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
349 return 'Use %s() or %s to exit' % (self.name, eof) |
|
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
350 def __call__(self, code=None): |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
351 # Shells like IDLE catch the SystemExit, but listen when their |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
352 # stdin wrapper is closed. |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
353 try: |
|
44390
86358b43c8bb
Don't close sys.stdin with quit() if sys.stdin wraps fd 0. Otherwise it will raise a warning: Lib/io.py:1221: RuntimeWarning: Trying to close unclosable fd
Christian Heimes <christian@cheimes.de>
parents:
44364
diff
changeset
|
354 fd = -1 |
|
86358b43c8bb
Don't close sys.stdin with quit() if sys.stdin wraps fd 0. Otherwise it will raise a warning: Lib/io.py:1221: RuntimeWarning: Trying to close unclosable fd
Christian Heimes <christian@cheimes.de>
parents:
44364
diff
changeset
|
355 if hasattr(sys.stdin, "fileno"): |
|
86358b43c8bb
Don't close sys.stdin with quit() if sys.stdin wraps fd 0. Otherwise it will raise a warning: Lib/io.py:1221: RuntimeWarning: Trying to close unclosable fd
Christian Heimes <christian@cheimes.de>
parents:
44364
diff
changeset
|
356 fd = sys.stdin.fileno() |
|
86358b43c8bb
Don't close sys.stdin with quit() if sys.stdin wraps fd 0. Otherwise it will raise a warning: Lib/io.py:1221: RuntimeWarning: Trying to close unclosable fd
Christian Heimes <christian@cheimes.de>
parents:
44364
diff
changeset
|
357 if fd != 0: |
|
86358b43c8bb
Don't close sys.stdin with quit() if sys.stdin wraps fd 0. Otherwise it will raise a warning: Lib/io.py:1221: RuntimeWarning: Trying to close unclosable fd
Christian Heimes <christian@cheimes.de>
parents:
44364
diff
changeset
|
358 # Don't close stdin if it wraps fd 0 |
|
86358b43c8bb
Don't close sys.stdin with quit() if sys.stdin wraps fd 0. Otherwise it will raise a warning: Lib/io.py:1221: RuntimeWarning: Trying to close unclosable fd
Christian Heimes <christian@cheimes.de>
parents:
44364
diff
changeset
|
359 sys.stdin.close() |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
360 except: |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39576
diff
changeset
|
361 pass |
|
36922
d3d2f9ffdc06
Patch #1446372: quit and exit can now be called from the interactive
Georg Brandl <georg@python.org>
parents:
32766
diff
changeset
|
362 raise SystemExit(code) |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
363 builtins.quit = Quitter('quit') |
|
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
364 builtins.exit = Quitter('exit') |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
365 |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
366 |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
367 class _Printer(object): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
368 """interactive prompt objects for printing the license text, a list of |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
369 contributors and the copyright notice.""" |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
370 |
|
14409
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
371 MAXLINES = 23 |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
372 |
|
14996
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
373 def __init__(self, name, data, files=(), dirs=()): |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
374 self.__name = name |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
375 self.__data = data |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
376 self.__files = files |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
377 self.__dirs = dirs |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
378 self.__lines = None |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
379 |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
380 def __setup(self): |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
381 if self.__lines: |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
382 return |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
383 data = None |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
384 for dir in self.__dirs: |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
385 for filename in self.__files: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
386 filename = os.path.join(dir, filename) |
|
14996
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
387 try: |
|
39647
dceea41f4a6d
Anna Ravenscroft identified many occurrences of "file" used to open a file
Alex Martelli <aleaxit@gmail.com>
parents:
39610
diff
changeset
|
388 fp = open(filename, "rU") |
|
14996
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
389 data = fp.read() |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
390 fp.close() |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
391 break |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
392 except IOError: |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
393 pass |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
394 if data: |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
395 break |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
396 if not data: |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
397 data = self.__data |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
398 self.__lines = data.split('\n') |
|
14409
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
399 self.__linecnt = len(self.__lines) |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
400 |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
401 def __repr__(self): |
|
14996
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
402 self.__setup() |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
403 if len(self.__lines) <= self.MAXLINES: |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
404 return "\n".join(self.__lines) |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
405 else: |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
406 return "Type %s() to see the full %s text" % ((self.__name,)*2) |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
407 |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
408 def __call__(self): |
|
5e4eed062b54
Fix a few problems with the _Printer class and the license variable.
Guido van Rossum <guido@python.org>
parents:
14911
diff
changeset
|
409 self.__setup() |
|
14409
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
410 prompt = 'Hit Return for more, or q (and Return) to quit: ' |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
411 lineno = 0 |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
412 while 1: |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
413 try: |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
414 for i in range(lineno, lineno + self.MAXLINES): |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
415 print(self.__lines[i]) |
|
14409
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
416 except IndexError: |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
417 break |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
418 else: |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
419 lineno += self.MAXLINES |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
420 key = None |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
421 while key is None: |
|
44364
6ea0e15ce573
Fix issue #1667. The _Printer() class was using sys.stdin.readline()
Guido van Rossum <guido@python.org>
parents:
44098
diff
changeset
|
422 key = input(prompt) |
|
14409
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
423 if key not in ('', 'q'): |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
424 key = None |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
425 if key == 'q': |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
426 break |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
427 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
428 def setcopyright(): |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
429 """Set 'copyright' and 'credits' in builtins""" |
|
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
430 builtins.copyright = _Printer("copyright", sys.copyright) |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
431 if sys.platform[:4] == 'java': |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
432 builtins.credits = _Printer( |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
433 "credits", |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
434 "Jython is maintained by the Jython developers (www.jython.org).") |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
435 else: |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
436 builtins.credits = _Printer("credits", """\ |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
437 Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
438 for supporting Python development. See www.python.org for more information.""") |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
439 here = os.path.dirname(os.__file__) |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
440 builtins.license = _Printer( |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
441 "license", "See http://www.python.org/%.3s/license.html" % sys.version, |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
442 ["LICENSE.txt", "LICENSE"], |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
443 [os.path.join(here, os.pardir), here, os.curdir]) |
|
14409
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
444 |
|
a76ab7c8fc29
Add new builtin commands "copyright", "license", "credits" which
Guido van Rossum <guido@python.org>
parents:
13614
diff
changeset
|
445 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
446 class _Helper(object): |
|
60570
7a390eb50df1
Merged revisions 80022 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
60058
diff
changeset
|
447 """Define the builtin 'help'. |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
448 This is a wrapper around pydoc.help (with a twist). |
|
18090
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
449 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
450 """ |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
451 |
|
18090
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
452 def __repr__(self): |
|
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
453 return "Type help() for interactive help, " \ |
|
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
454 "or help(object) for help about object." |
|
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
455 def __call__(self, *args, **kwds): |
|
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
456 import pydoc |
|
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
457 return pydoc.help(*args, **kwds) |
|
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
458 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
459 def sethelper(): |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
43605
diff
changeset
|
460 builtins.help = _Helper() |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
461 |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
462 def aliasmbcs(): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
463 """On Windows, some default encodings are not provided by Python, |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
464 while they are always available as "mbcs" in each locale. Make |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
465 them usable by aliasing to "mbcs" in such a case.""" |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
466 if sys.platform == 'win32': |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
467 import locale, codecs |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
468 enc = locale.getdefaultlocale()[1] |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
469 if enc.startswith('cp'): # "cp***" ? |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
470 try: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
471 codecs.lookup(enc) |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
472 except LookupError: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
473 import encodings |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
474 encodings._cache[enc] = encodings._unknown |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
475 encodings.aliases.aliases[enc] = 'mbcs' |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
476 |
|
18090
41016675002f
Add new built-in 'help' which invokes pydoc.help (with a twist).
Guido van Rossum <guido@python.org>
parents:
17211
diff
changeset
|
477 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
478 def execsitecustomize(): |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
479 """Run custom site specific code, if available.""" |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
480 try: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
481 import sitecustomize |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
482 except ImportError: |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
483 pass |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
39782
diff
changeset
|
484 except Exception as err: |
|
39576
d23b7cb1700b
When sitecustomize.py fails, don't make all of site.py fail,
Guido van Rossum <guido@python.org>
parents:
39442
diff
changeset
|
485 if os.environ.get("PYTHONVERBOSE"): |
|
59865
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
486 sys.excepthook(*sys.exc_info()) |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
487 else: |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
488 sys.stderr.write( |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
489 "Error in sitecustomize; set PYTHONVERBOSE for traceback:\n" |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
490 "%s: %s\n" % |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
491 (err.__class__.__name__, err)) |
|
28141
a3cf07bac373
Patch #671666: Alias ANSI code page to "mbcs".
Martin v. Löwis <martin@v.loewis.de>
parents:
26885
diff
changeset
|
492 |
|
13612
f3401ed132a1
-- changed default encoding to "ascii". you can still change
Fredrik Lundh <fredrik@pythonware.com>
parents:
13523
diff
changeset
|
493 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
494 def execusercustomize(): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
495 """Run custom user specific code, if available.""" |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
496 try: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
497 import usercustomize |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
498 except ImportError: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
499 pass |
|
59865
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
500 except Exception as err: |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
501 if os.environ.get("PYTHONVERBOSE"): |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
502 sys.excepthook(*sys.exc_info()) |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
503 else: |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
504 sys.stderr.write( |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
505 "Error in usercustomize; set PYTHONVERBOSE for traceback:\n" |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
506 "%s: %s\n" % |
|
c2d2e26bcf7f
Merged revisions 78872 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
52497
diff
changeset
|
507 (err.__class__.__name__, err)) |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
508 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
509 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
510 def main(): |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
511 global ENABLE_USER_SITE |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
512 |
| 60648 | 513 abs_paths() |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
514 known_paths = removeduppaths() |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
515 if ENABLE_USER_SITE is None: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
516 ENABLE_USER_SITE = check_enableusersite() |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
517 known_paths = addusersitepackages(known_paths) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
518 known_paths = addsitepackages(known_paths) |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
519 if sys.platform == 'os2emx': |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
520 setBEGINLIBPATH() |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
521 setquit() |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
522 setcopyright() |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
523 sethelper() |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
524 aliasmbcs() |
|
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
525 execsitecustomize() |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
526 if ENABLE_USER_SITE: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
527 execusercustomize() |
|
12873
efc6d7789d9e
Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
9520
diff
changeset
|
528 |
|
32246
70cfe065eac5
Refactored site.py into functions. Also moved over to using sets.
Brett Cannon <bcannon@gmail.com>
parents:
31726
diff
changeset
|
529 main() |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
530 |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
531 def _script(): |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
532 help = """\ |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
533 %s [--user-base] [--user-site] |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
534 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
535 Without arguments print some useful information |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
536 With arguments print the value of USER_BASE and/or USER_SITE separated |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
537 by '%s'. |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
538 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
539 Exit codes with --user-base or --user-site: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
540 0 - user site directory is enabled |
|
47063
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46708
diff
changeset
|
541 1 - user site directory is disabled by user |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
542 2 - uses site directory is disabled by super user |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
543 or for security reasons |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
544 >2 - unknown error |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
545 """ |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
546 args = sys.argv[1:] |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
547 if not args: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
548 print("sys.path = [") |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
549 for dir in sys.path: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
550 print(" %r," % (dir,)) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
551 print("]") |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
552 print("USER_BASE: %r (%s)" % (USER_BASE, |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
553 "exists" if os.path.isdir(USER_BASE) else "doesn't exist")) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
554 print("USER_SITE: %r (%s)" % (USER_SITE, |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
555 "exists" if os.path.isdir(USER_SITE) else "doesn't exist")) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
556 print("ENABLE_USER_SITE: %r" % ENABLE_USER_SITE) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
557 sys.exit(0) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
558 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
559 buffer = [] |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
560 if '--user-base' in args: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
561 buffer.append(USER_BASE) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
562 if '--user-site' in args: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
563 buffer.append(USER_SITE) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
564 |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
565 if buffer: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
566 print(os.pathsep.join(buffer)) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
567 if ENABLE_USER_SITE: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
568 sys.exit(0) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
569 elif ENABLE_USER_SITE is False: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
570 sys.exit(1) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
571 elif ENABLE_USER_SITE is None: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
572 sys.exit(2) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
573 else: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
574 sys.exit(3) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
575 else: |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
576 import textwrap |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
577 print(textwrap.dedent(help % (sys.argv[0], os.pathsep))) |
|
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
578 sys.exit(10) |
|
6200
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
579 |
|
c57cede3c7c0
New site.py semantics. Searches in
Guido van Rossum <guido@python.org>
parents:
4010
diff
changeset
|
580 if __name__ == '__main__': |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
581 _script() |
