diff --git a/direct/src/showutil/dist.py b/direct/src/showutil/dist.py index 344ad7655b..4c2c42c0ba 100644 --- a/direct/src/showutil/dist.py +++ b/direct/src/showutil/dist.py @@ -209,7 +209,7 @@ class build_apps(distutils.core.Command): else: # Builtin module, but might not be builtin in wheel libs, so double check if module in whl_modules: - source_path = '{0}/deploy_libs/{1}.{2}'.format(p3dwhlfn, module, whl_modules_ext) + source_path = os.path.join(p3dwhlfn, 'deploy_libs/{}.{}'.format(module, whl_modules_ext)) basename = os.path.basename(source_path) else: continue @@ -339,12 +339,15 @@ class build_apps(distutils.core.Command): self.copy_with_dependencies(source_path, target_path, search_path) return - elif '.whl/' in source_path: + elif '.whl' in source_path: # Check whether the file exists inside the wheel. - whl, wf = source_path.split('.whl/') + whl, wf = source_path.split('.whl' + os.path.sep) whl += '.whl' whlfile = self._get_zip_file(whl) + # Normalize the path separator + wf = wf.replace(os.path.sep, '/') + # Look case-insensitively. namelist = whlfile.namelist() namelist_lower = [file.lower() for file in namelist] @@ -352,7 +355,7 @@ class build_apps(distutils.core.Command): if wf.lower() in namelist_lower: # We have a match. Change it to the correct case. wf = namelist[namelist_lower.index(wf.lower())] - source_path = '/'.join((whl, wf)) + source_path = os.path.join(whl, wf) target_path = os.path.join(target_dir, os.path.basename(wf)) self.copy_with_dependencies(source_path, target_path, search_path) return @@ -382,12 +385,16 @@ class build_apps(distutils.core.Command): source_path may be located inside a .whl file. """ - print("copying {0} -> {1}".format(os.path.relpath(source_path, self.build_base), os.path.relpath(target_path, self.build_base))) + try: + print("copying {0} -> {1}".format(os.path.relpath(source_path, self.build_base), os.path.relpath(target_path, self.build_base))) + except ValueError: + # No relative path (e.g., files on different drives in Windows), just print absolute paths instead + print("copying {0} -> {1}".format(source_path, target_path)) # Copy the file, and open it for analysis. - if '.whl/' in source_path: + if '.whl' in source_path: # This was found in a wheel, extract it - whl, wf = source_path.split('.whl/') + whl, wf = source_path.split('.whl' + os.path.sep) whl += '.whl' whlfile = self._get_zip_file(whl) data = whlfile.read(wf)