diff --git a/pywin32_postinstall.py b/pywin32_postinstall.py index e90e354d9..6974c8eb5 100644 --- a/pywin32_postinstall.py +++ b/pywin32_postinstall.py @@ -642,9 +642,12 @@ def uninstall(lib_dir): # Out of principle, we're still not using system exits. -def verify_destination(location): +def verify_destination(location: str) -> str: + location = os.path.abspath(location) if not os.path.isdir(location): - raise argparse.ArgumentTypeError(f'Path "{location}" does not exist!') + raise argparse.ArgumentTypeError( + f'Path "{location}" is not an existing directory!' + ) return location diff --git a/setup.py b/setup.py index b9a664f44..75fdc367b 100644 --- a/setup.py +++ b/setup.py @@ -856,16 +856,6 @@ def run(self): This is only run for local installs. Wheel-based installs won't run this code. """ install.run(self) - # If self.root has a value, it means we are being "installed" into some other - # directory than Python itself - in which case we must *not* run our installer. - # bdist_wininst used to trigger this by using a temp directory. - # Is this still a concern ? - if self.root: - print( - "Not executing post install script when " - + f"not installing in Python itself (self.root={self.root})" - ) - return self.execute(self._postinstall, (), msg="Executing post install script...") def _postinstall(self): @@ -874,17 +864,17 @@ def _postinstall(self): raise RuntimeError(f"Can't find '{filename}'") # As of setuptools>=74.0.0, we no longer need to # be concerned about distutils calling win32api - subprocess.Popen( - [ + subprocess.check_call( + ( sys.executable, filename, "-install", "-destination", self.install_lib, - "-quiet", + *([] if self.verbose else ["-quiet"]), "-wait", str(os.getpid()), - ] + ) )