@@ -549,67 +549,65 @@ def test_zippath_from_non_installed_posix(self):
549549 # functional non-installed python, but enough for this test.
550550 platlibdir = sys .platlibdir
551551 non_installed_dir = os .path .realpath (tempfile .mkdtemp ())
552- try :
553- bindir = os .path .join (non_installed_dir , self .bindir )
554- os .mkdir (bindir )
555- shutil .copy2 (sys .executable , bindir )
556- libdir = os .path .join (non_installed_dir , platlibdir , self .lib [1 ])
557- os .makedirs (libdir )
558- landmark = os .path .join (libdir , "os.py" )
559- stdlib_zip = "python%d%d.zip" % sys .version_info [:2 ]
560- zip_landmark = os .path .join (non_installed_dir ,
561- platlibdir ,
562- stdlib_zip )
563- additional_pythonpath_for_non_installed = []
564- # Copy stdlib files to the non-installed python so venv can
565- # correctly calculate the prefix.
566- for eachpath in sys .path :
567- if eachpath .endswith (".zip" ):
568- if os .path .isfile (eachpath ):
569- shutil .copyfile (
570- eachpath ,
571- os .path .join (non_installed_dir , platlibdir ))
572- elif os .path .isfile (os .path .join (eachpath , "os.py" )):
573- for name in os .listdir (eachpath ):
574- if name == "site-packages" :
575- continue
576- fn = os .path .join (eachpath , name )
577- if os .path .isfile (fn ):
578- shutil .copy (fn , libdir )
579- elif os .path .isdir (fn ):
580- shutil .copytree (fn , os .path .join (libdir , name ))
581- else :
582- additional_pythonpath_for_non_installed .append (
583- eachpath )
584- cmd = [os .path .join (non_installed_dir , self .bindir , self .exe ),
585- "-m" ,
586- "venv" ,
587- "--without-pip" ,
588- self .env_dir ]
589- # Our fake non-installed python is not fully functional because
590- # it cannot find the extensions. Set PYTHONPATH so it can run the
591- # venv module correctly.
592- pythonpath = os .pathsep .join (
593- additional_pythonpath_for_non_installed )
594- # For python built with shared enabled. We need to set
595- # LD_LIBRARY_PATH so the non-installed python can find and link
596- # libpython.so
597- ld_library_path = os .path .abspath (os .path .dirname (sys .executable ))
598- if sys .platform == 'darwin' :
599- ld_library_path_env = "DYLD_LIBRARY_PATH"
552+ self .addCleanup (rmtree , non_installed_dir )
553+ bindir = os .path .join (non_installed_dir , self .bindir )
554+ os .mkdir (bindir )
555+ shutil .copy2 (sys .executable , bindir )
556+ libdir = os .path .join (non_installed_dir , platlibdir , self .lib [1 ])
557+ os .makedirs (libdir )
558+ landmark = os .path .join (libdir , "os.py" )
559+ stdlib_zip = "python%d%d.zip" % sys .version_info [:2 ]
560+ zip_landmark = os .path .join (non_installed_dir ,
561+ platlibdir ,
562+ stdlib_zip )
563+ additional_pythonpath_for_non_installed = []
564+ # Copy stdlib files to the non-installed python so venv can
565+ # correctly calculate the prefix.
566+ for eachpath in sys .path :
567+ if eachpath .endswith (".zip" ):
568+ if os .path .isfile (eachpath ):
569+ shutil .copyfile (
570+ eachpath ,
571+ os .path .join (non_installed_dir , platlibdir ))
572+ elif os .path .isfile (os .path .join (eachpath , "os.py" )):
573+ for name in os .listdir (eachpath ):
574+ if name == "site-packages" :
575+ continue
576+ fn = os .path .join (eachpath , name )
577+ if os .path .isfile (fn ):
578+ shutil .copy (fn , libdir )
579+ elif os .path .isdir (fn ):
580+ shutil .copytree (fn , os .path .join (libdir , name ))
600581 else :
601- ld_library_path_env = "LD_LIBRARY_PATH"
602- subprocess .check_call (cmd ,
603- env = {"PYTHONPATH" : pythonpath ,
604- ld_library_path_env : ld_library_path })
605- envpy = os .path .join (self .env_dir , self .bindir , self .exe )
606- # Now check the venv created from the non-installed python has
607- # correct zip path in pythonpath.
608- cmd = [envpy , '-S' , '-c' , 'import sys; print(sys.path)' ]
609- out , err = check_output (cmd )
610- self .assertTrue (zip_landmark .encode () in out )
611- finally :
612- rmtree (non_installed_dir )
582+ additional_pythonpath_for_non_installed .append (
583+ eachpath )
584+ cmd = [os .path .join (non_installed_dir , self .bindir , self .exe ),
585+ "-m" ,
586+ "venv" ,
587+ "--without-pip" ,
588+ self .env_dir ]
589+ # Our fake non-installed python is not fully functional because
590+ # it cannot find the extensions. Set PYTHONPATH so it can run the
591+ # venv module correctly.
592+ pythonpath = os .pathsep .join (
593+ additional_pythonpath_for_non_installed )
594+ # For python built with shared enabled. We need to set
595+ # LD_LIBRARY_PATH so the non-installed python can find and link
596+ # libpython.so
597+ ld_library_path = os .path .abspath (os .path .dirname (sys .executable ))
598+ if sys .platform == 'darwin' :
599+ ld_library_path_env = "DYLD_LIBRARY_PATH"
600+ else :
601+ ld_library_path_env = "LD_LIBRARY_PATH"
602+ subprocess .check_call (cmd ,
603+ env = {"PYTHONPATH" : pythonpath ,
604+ ld_library_path_env : ld_library_path })
605+ envpy = os .path .join (self .env_dir , self .bindir , self .exe )
606+ # Now check the venv created from the non-installed python has
607+ # correct zip path in pythonpath.
608+ cmd = [envpy , '-S' , '-c' , 'import sys; print(sys.path)' ]
609+ out , err = check_output (cmd )
610+ self .assertTrue (zip_landmark .encode () in out )
613611
614612@requireVenvCreate
615613class EnsurePipTest (BaseTest ):
0 commit comments