mirror of https://github.com/python/cpython
Issue #26587: Allow .pth files to specify file paths as well as
directories. Thanks to Wolfgang Langner for the bug report and initial version of the patch.
This commit is contained in:
parent
ef0138f421
commit
5f0507d8ab
|
@ -251,6 +251,14 @@ Previously, names of properties and slots which were not yet created on
|
|||
an instance were excluded. (Contributed by Martin Panter in :issue:`25590`.)
|
||||
|
||||
|
||||
site
|
||||
----
|
||||
|
||||
When specifying paths to add to :attr:`sys.path` in a `.pth` file,
|
||||
you may now specify file paths on top of directories (e.g. zip files).
|
||||
(Contributed by Wolfgang Langner in :issue:`26587`).
|
||||
|
||||
|
||||
telnetlib
|
||||
---------
|
||||
|
||||
|
|
18
Lib/site.py
18
Lib/site.py
|
@ -131,13 +131,13 @@ def removeduppaths():
|
|||
|
||||
|
||||
def _init_pathinfo():
|
||||
"""Return a set containing all existing directory entries from sys.path"""
|
||||
"""Return a set containing all existing file system items from sys.path."""
|
||||
d = set()
|
||||
for dir in sys.path:
|
||||
for item in sys.path:
|
||||
try:
|
||||
if os.path.isdir(dir):
|
||||
dir, dircase = makepath(dir)
|
||||
d.add(dircase)
|
||||
if os.path.exists(item):
|
||||
_, itemcase = makepath(item)
|
||||
d.add(itemcase)
|
||||
except TypeError:
|
||||
continue
|
||||
return d
|
||||
|
@ -150,9 +150,9 @@ def addpackage(sitedir, name, known_paths):
|
|||
"""
|
||||
if known_paths is None:
|
||||
known_paths = _init_pathinfo()
|
||||
reset = 1
|
||||
reset = True
|
||||
else:
|
||||
reset = 0
|
||||
reset = False
|
||||
fullname = os.path.join(sitedir, name)
|
||||
try:
|
||||
f = open(fullname, "r")
|
||||
|
@ -190,9 +190,9 @@ def addsitedir(sitedir, known_paths=None):
|
|||
'sitedir'"""
|
||||
if known_paths is None:
|
||||
known_paths = _init_pathinfo()
|
||||
reset = 1
|
||||
reset = True
|
||||
else:
|
||||
reset = 0
|
||||
reset = False
|
||||
sitedir, sitedircase = makepath(sitedir)
|
||||
if not sitedircase in known_paths:
|
||||
sys.path.append(sitedir) # Add path component
|
||||
|
|
|
@ -75,7 +75,7 @@ class HelperFunctionsTests(unittest.TestCase):
|
|||
def test_init_pathinfo(self):
|
||||
dir_set = site._init_pathinfo()
|
||||
for entry in [site.makepath(path)[1] for path in sys.path
|
||||
if path and os.path.isdir(path)]:
|
||||
if path and os.path.exists(path)]:
|
||||
self.assertIn(entry, dir_set,
|
||||
"%s from sys.path not found in set returned "
|
||||
"by _init_pathinfo(): %s" % (entry, dir_set))
|
||||
|
|
|
@ -815,6 +815,7 @@ Torsten Landschoff
|
|||
Tino Lange
|
||||
Glenn Langford
|
||||
Andrew Langmead
|
||||
Wolfgang Langner
|
||||
Detlef Lannert
|
||||
Soren Larsen
|
||||
Amos Latteier
|
||||
|
|
Loading…
Reference in New Issue