30 lines
1.3 KiB
Python
30 lines
1.3 KiB
Python
# Imported by pywin32.pth to bootstrap the pywin32 environment in "portable"
|
|
# environments or any other case where the post-install script isn't run.
|
|
#
|
|
# In short, there's a directory installed by pywin32 named 'pywin32_system32'
|
|
# with some important DLLs which need to be found by Python when some pywin32
|
|
# modules are imported.
|
|
# If Python has `os.add_dll_directory()`, we need to call it with this path.
|
|
# Otherwise, we add this path to PATH.
|
|
|
|
|
|
try:
|
|
import pywin32_system32
|
|
except ImportError: # Python ≥3.6: replace ImportError with ModuleNotFoundError
|
|
pass
|
|
else:
|
|
import os
|
|
|
|
# We're guaranteed only that __path__: Iterable[str]
|
|
# https://docs.python.org/3/reference/import.html#__path__
|
|
for path in pywin32_system32.__path__:
|
|
if os.path.isdir(path):
|
|
if hasattr(os, "add_dll_directory"):
|
|
os.add_dll_directory(path)
|
|
# This is to ensure the pywin32 path is in the beginning to find the
|
|
# pywin32 DLLs first and prevent other PATH entries to shadow them
|
|
elif not os.environ["PATH"].startswith(path):
|
|
os.environ["PATH"] = os.environ["PATH"].replace(os.pathsep + path, "")
|
|
os.environ["PATH"] = path + os.pathsep + os.environ["PATH"]
|
|
break
|