def remove_easy_install_pth(files, prefix, config, preserve_egg_dir=False): """ remove the need for easy-install.pth and finally remove easy-install.pth itself """ absfiles = [os.path.join(prefix, f) for f in files] py_ver = '.'.join(config.variant['python'].split('.')[:2]) sp_dir = utils.get_site_packages(prefix, py_ver) for egg_path in glob(os.path.join(sp_dir, '*-py*.egg')): if os.path.isdir(egg_path): if preserve_egg_dir or not any( os.path.join(egg_path, i) in absfiles for i in walk_prefix( egg_path, False, windows_forward_slashes=False)): write_pth(egg_path, config=config) continue print('found egg dir:', egg_path) try: shutil.move(os.path.join(egg_path, 'EGG-INFO'), egg_path + '-info') except OSError: pass utils.rm_rf(os.path.join(egg_path, 'EGG-INFO')) for fn in os.listdir(egg_path): if fn == '__pycache__': utils.rm_rf(os.path.join(egg_path, fn)) else: # this might be a name-space package # so the package directory already exists # from another installed dependency if os.path.exists(os.path.join(sp_dir, fn)): try: utils.copy_into(os.path.join(egg_path, fn), os.path.join(sp_dir, fn), config.timeout, locking=config.locking) utils.rm_rf(os.path.join(egg_path, fn)) except IOError as e: fn = os.path.basename(str(e).split()[-1]) raise IOError( "Tried to merge folder {egg_path} into {sp_dir}, but {fn}" " exists in both locations. Please either add " "build/preserve_egg_dir: True to meta.yaml, or manually " "remove the file during your install process to avoid " "this conflict.".format(egg_path=egg_path, sp_dir=sp_dir, fn=fn)) else: shutil.move(os.path.join(egg_path, fn), os.path.join(sp_dir, fn)) elif os.path.isfile(egg_path): if egg_path not in absfiles: continue print('found egg:', egg_path) write_pth(egg_path, config=config) utils.rm_rf(os.path.join(sp_dir, 'easy-install.pth'))
def remove_easy_install_pth(files, prefix, config, preserve_egg_dir=False): """ remove the need for easy-install.pth and finally remove easy-install.pth itself """ absfiles = [os.path.join(prefix, f) for f in files] py_ver = '.'.join(config.variant['python'].split('.')[:2]) sp_dir = utils.get_site_packages(prefix, py_ver) for egg_path in glob(os.path.join(sp_dir, '*-py*.egg')): if os.path.isdir(egg_path): if preserve_egg_dir or not any(os.path.join(egg_path, i) in absfiles for i in walk_prefix(egg_path, False, windows_forward_slashes=False)): write_pth(egg_path, config=config) continue print('found egg dir:', egg_path) try: os.rename(os.path.join(egg_path, 'EGG-INFO'), egg_path + '-info') except OSError: pass utils.rm_rf(os.path.join(egg_path, 'EGG-INFO')) for fn in os.listdir(egg_path): if fn == '__pycache__': utils.rm_rf(os.path.join(egg_path, fn)) else: # this might be a name-space package # so the package directory already exists # from another installed dependency if os.path.exists(os.path.join(sp_dir, fn)): try: utils.copy_into(os.path.join(egg_path, fn), os.path.join(sp_dir, fn), config.timeout, locking=config.locking) utils.rm_rf(os.path.join(egg_path, fn)) except IOError as e: fn = os.path.basename(str(e).split()[-1]) raise IOError("Tried to merge folder {egg_path} into {sp_dir}, but {fn}" " exists in both locations. Please either add " "build/preserve_egg_dir: True to meta.yaml, or manually " "remove the file during your install process to avoid " "this conflict." .format(egg_path=egg_path, sp_dir=sp_dir, fn=fn)) else: os.rename(os.path.join(egg_path, fn), os.path.join(sp_dir, fn)) elif os.path.isfile(egg_path): if egg_path not in absfiles: continue print('found egg:', egg_path) write_pth(egg_path, config=config) utils.rm_rf(os.path.join(sp_dir, 'easy-install.pth'))