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 9ff63c2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 16 deletions.
1 change: 1 addition & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ https://mhammond.github.io/pywin32_installers.html.
Coming in build 309, as yet unreleased
--------------------------------------

* Added support for relative path for `pywin32_postinstall`'s `-destination` argument (#2447, @Avasam)
* Restored axdebug builds on Python 3.10 (#2416, @Avasam)
* Pythonwin: Bumped Scintilla from 1.77 to 4.4.6. The full changelog can be found here: https://www.scintilla.org/ScintillaHistory.html
* Fixed `ddeclient` and `ddeserver` demos import error (#2290, @Avasam)
Expand Down
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
17 changes: 3 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,16 @@ 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",
"-wait",
str(os.getpid()),
]
)
)


Expand Down

0 comments on commit 9ff63c2

Please sign in to comment.