diff options
| author | phillip.eby <phillip.eby@6015fed2-1504-0410-9fe1-9d1591cc4771> | 2008-08-21 18:41:59 +0000 |
|---|---|---|
| committer | phillip.eby <phillip.eby@6015fed2-1504-0410-9fe1-9d1591cc4771> | 2008-08-21 18:41:59 +0000 |
| commit | 5a0a6bd42e3d72c27c8baa5b2929ef1448d87ffa (patch) | |
| tree | 4d8c020980f61af52c48ab6088ea1395b6f8a689 | |
| parent | ccd0ec45f003dd5cee32c37b18d8634a5ba34a6d (diff) | |
| download | python-setuptools-5a0a6bd42e3d72c27c8baa5b2929ef1448d87ffa.tar.gz | |
Candidate fix for http://bugs.python.org/setuptools/issue20
git-svn-id: http://svn.python.org/projects/sandbox/trunk/setuptools@65949 6015fed2-1504-0410-9fe1-9d1591cc4771
| -rwxr-xr-x | setuptools/sandbox.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 4db0dbd..ee4c3df 100755 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -5,10 +5,8 @@ from distutils.errors import DistutilsError __all__ = [ "AbstractSandbox", "DirectorySandbox", "SandboxViolation", "run_setup", ] - def run_setup(setup_script, args): """Run a distutils setup script, sandboxed in its directory""" - old_dir = os.getcwd() save_argv = sys.argv[:] save_path = sys.path[:] @@ -16,10 +14,9 @@ def run_setup(setup_script, args): temp_dir = os.path.join(setup_dir,'temp') if not os.path.isdir(temp_dir): os.makedirs(temp_dir) save_tmp = tempfile.tempdir - + save_modules = sys.modules.copy() try: - tempfile.tempdir = temp_dir - os.chdir(setup_dir) + tempfile.tempdir = temp_dir; os.chdir(setup_dir) try: sys.argv[:] = [setup_script]+list(args) sys.path.insert(0, setup_dir) @@ -34,6 +31,9 @@ def run_setup(setup_script, args): raise # Normal exit, just return finally: + sys.modules.update(save_modules) + for key in list(sys.modules): + if key not in save_modules: del sys.modules[key] os.chdir(old_dir) sys.path[:] = save_path sys.argv[:] = save_argv |
