diff options
author | Carl Meyer <carl@oddbird.net> | 2018-06-16 04:40:56 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2018-06-16 04:40:56 (GMT) |
commit | b193fa996a746111252156f11fb14c12fd6267e6 (patch) | |
tree | 1995957ce580ba762a19f64e41db2db32aec096a /Lib/test/test_importlib/util.py | |
parent | 68680035143a3a6398faa88f067f244c74691d19 (diff) | |
download | cpython-b193fa996a746111252156f11fb14c12fd6267e6.zip cpython-b193fa996a746111252156f11fb14c12fd6267e6.tar.gz cpython-b193fa996a746111252156f11fb14c12fd6267e6.tar.bz2 |
bpo-33499: Add PYTHONPYCACHEPREFIX env var for alt bytecode cache location. (GH-6834)
In some development setups it is inconvenient or impossible to write bytecode
caches to the code tree, but the bytecode caches are still useful. The
PYTHONPYCACHEPREFIX environment variable allows specifying an alternate
location for cached bytecode files, within which a directory tree mirroring the code
tree will be created. This cache tree is then used (for both reading and writing)
instead of the local `__pycache__` subdirectory within each source directory.
Exposed at runtime as sys.pycache_prefix (defaulting to None), and can
be set from the CLI as "-X pycache_prefix=path".
Patch by Carl Meyer.
Diffstat (limited to 'Lib/test/test_importlib/util.py')
-rw-r--r-- | Lib/test/test_importlib/util.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Lib/test/test_importlib/util.py b/Lib/test/test_importlib/util.py index b0badeb..196ea1c 100644 --- a/Lib/test/test_importlib/util.py +++ b/Lib/test/test_importlib/util.py @@ -320,6 +320,17 @@ def ensure_bytecode_path(bytecode_path): @contextlib.contextmanager +def temporary_pycache_prefix(prefix): + """Adjust and restore sys.pycache_prefix.""" + _orig_prefix = sys.pycache_prefix + sys.pycache_prefix = prefix + try: + yield + finally: + sys.pycache_prefix = _orig_prefix + + +@contextlib.contextmanager def create_modules(*names): """Temporarily create each named module with an attribute (named 'attr') that contains the name passed into the context manager that caused the |