@@ -549,67 +549,65 @@ def test_zippath_from_non_installed_posix(self):
549
549
# functional non-installed python, but enough for this test.
550
550
platlibdir = sys .platlibdir
551
551
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 ))
600
581
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 )
613
611
614
612
@requireVenvCreate
615
613
class EnsurePipTest (BaseTest ):
0 commit comments