@@ -269,6 +269,7 @@ def run(self, options, args):
269
269
# Create a target directory for using with the target option
270
270
target_temp_dir = TempDirectory (kind = "target" )
271
271
target_temp_dir_path = target_temp_dir .path
272
+ self .enter_context (target_temp_dir )
272
273
273
274
global_options = options .global_options or []
274
275
@@ -452,54 +453,53 @@ def _handle_target_dir(self, target_dir, target_temp_dir, upgrade):
452
453
# packages to be moved to target directory
453
454
lib_dir_list = []
454
455
455
- with target_temp_dir :
456
- # Checking both purelib and platlib directories for installed
457
- # packages to be moved to target directory
458
- scheme = distutils_scheme ('' , home = target_temp_dir .path )
459
- purelib_dir = scheme ['purelib' ]
460
- platlib_dir = scheme ['platlib' ]
461
- data_dir = scheme ['data' ]
462
-
463
- if os .path .exists (purelib_dir ):
464
- lib_dir_list .append (purelib_dir )
465
- if os .path .exists (platlib_dir ) and platlib_dir != purelib_dir :
466
- lib_dir_list .append (platlib_dir )
467
- if os .path .exists (data_dir ):
468
- lib_dir_list .append (data_dir )
469
-
470
- for lib_dir in lib_dir_list :
471
- for item in os .listdir (lib_dir ):
472
- if lib_dir == data_dir :
473
- ddir = os .path .join (data_dir , item )
474
- if any (s .startswith (ddir ) for s in lib_dir_list [:- 1 ]):
475
- continue
476
- target_item_dir = os .path .join (target_dir , item )
477
- if os .path .exists (target_item_dir ):
478
- if not upgrade :
479
- logger .warning (
480
- 'Target directory %s already exists. Specify '
481
- '--upgrade to force replacement.' ,
482
- target_item_dir
483
- )
484
- continue
485
- if os .path .islink (target_item_dir ):
486
- logger .warning (
487
- 'Target directory %s already exists and is '
488
- 'a link. pip will not automatically replace '
489
- 'links, please remove if replacement is '
490
- 'desired.' ,
491
- target_item_dir
492
- )
493
- continue
494
- if os .path .isdir (target_item_dir ):
495
- shutil .rmtree (target_item_dir )
496
- else :
497
- os .remove (target_item_dir )
498
-
499
- shutil .move (
500
- os .path .join (lib_dir , item ),
501
- target_item_dir
502
- )
456
+ # Checking both purelib and platlib directories for installed
457
+ # packages to be moved to target directory
458
+ scheme = distutils_scheme ('' , home = target_temp_dir .path )
459
+ purelib_dir = scheme ['purelib' ]
460
+ platlib_dir = scheme ['platlib' ]
461
+ data_dir = scheme ['data' ]
462
+
463
+ if os .path .exists (purelib_dir ):
464
+ lib_dir_list .append (purelib_dir )
465
+ if os .path .exists (platlib_dir ) and platlib_dir != purelib_dir :
466
+ lib_dir_list .append (platlib_dir )
467
+ if os .path .exists (data_dir ):
468
+ lib_dir_list .append (data_dir )
469
+
470
+ for lib_dir in lib_dir_list :
471
+ for item in os .listdir (lib_dir ):
472
+ if lib_dir == data_dir :
473
+ ddir = os .path .join (data_dir , item )
474
+ if any (s .startswith (ddir ) for s in lib_dir_list [:- 1 ]):
475
+ continue
476
+ target_item_dir = os .path .join (target_dir , item )
477
+ if os .path .exists (target_item_dir ):
478
+ if not upgrade :
479
+ logger .warning (
480
+ 'Target directory %s already exists. Specify '
481
+ '--upgrade to force replacement.' ,
482
+ target_item_dir
483
+ )
484
+ continue
485
+ if os .path .islink (target_item_dir ):
486
+ logger .warning (
487
+ 'Target directory %s already exists and is '
488
+ 'a link. pip will not automatically replace '
489
+ 'links, please remove if replacement is '
490
+ 'desired.' ,
491
+ target_item_dir
492
+ )
493
+ continue
494
+ if os .path .isdir (target_item_dir ):
495
+ shutil .rmtree (target_item_dir )
496
+ else :
497
+ os .remove (target_item_dir )
498
+
499
+ shutil .move (
500
+ os .path .join (lib_dir , item ),
501
+ target_item_dir
502
+ )
503
503
504
504
def _warn_about_conflicts (self , to_install ):
505
505
try :
0 commit comments