Pip installed wheels are not reproducible currently. The direct_url files encode an installation path and the installed wheels compile the python files at their location, not their final install location which is incorrect. To fix this, simply disable the direct_urls and pass the "root" to the python compile function to strip that path out of the compiled files. A version of this patch, perhaps stripping root from the direct_urls may be something that could be considered by upstream. Signed-off-by: Richard Purdie Upstream-Status: Pending Index: pip-22.0.3/src/pip/_internal/req/req_install.py =================================================================== --- pip-22.0.3.orig/src/pip/_internal/req/req_install.py +++ pip-22.0.3/src/pip/_internal/req/req_install.py @@ -758,7 +758,9 @@ class InstallRequirement: if self.is_wheel: assert self.local_file_path direct_url = None - if self.editable: + if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ: + direct_url = None + elif self.editable: direct_url = direct_url_for_editable(self.unpacked_source_directory) elif self.original_link: direct_url = direct_url_from_link( @@ -775,6 +777,7 @@ class InstallRequirement: warn_script_location=warn_script_location, direct_url=direct_url, requested=self.user_supplied, + root=root, ) self.install_succeeded = True return Index: pip-22.0.3/src/pip/_internal/operations/install/wheel.py =================================================================== --- pip-22.0.3.orig/src/pip/_internal/operations/install/wheel.py +++ pip-22.0.3/src/pip/_internal/operations/install/wheel.py @@ -436,6 +436,7 @@ def _install_wheel( warn_script_location: bool = True, direct_url: Optional[DirectUrl] = None, requested: bool = False, + root: str = None, ) -> None: """Install a wheel. @@ -612,7 +613,7 @@ def _install_wheel( with warnings.catch_warnings(): warnings.filterwarnings("ignore") for path in pyc_source_file_paths(): - success = compileall.compile_file(path, force=True, quiet=True) + success = compileall.compile_file(path, force=True, quiet=True, stripdir=root) if success: pyc_path = pyc_output_path(path) assert os.path.exists(pyc_path) @@ -723,6 +724,7 @@ def install_wheel( warn_script_location: bool = True, direct_url: Optional[DirectUrl] = None, requested: bool = False, + root: str = None, ) -> None: with ZipFile(wheel_path, allowZip64=True) as z: with req_error_context(req_description): @@ -735,4 +737,5 @@ def install_wheel( warn_script_location=warn_script_location, direct_url=direct_url, requested=requested, + root=root, )