Skip to content

Commit

Permalink
Automatically run pywin32_postinstall.py for local/from source inst…
Browse files Browse the repository at this point in the history
…alls (`pip install .`)

- Also respect the verbose flag instead of always running quiet
- Added support for relative path for the `-destination` argument
  • Loading branch information
Avasam committed Jan 5, 2025
1 parent 1311c41 commit 5219ca8
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 16 deletions.
7 changes: 5 additions & 2 deletions pywin32_postinstall.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
18 changes: 4 additions & 14 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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()),
]
)
)


Expand Down

0 comments on commit 5219ca8

Please sign in to comment.