# 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. import os import site # The directory should be installed under site-packages. dirname = os.path.dirname # This is to get the "...\Lib\site-packages" directory # out of this file name: "...\Lib\site-packages\win32\Lib\pywin32_bootstrap.py". # It needs to be searched when installed in virtual environments. level3_up_dir = dirname(dirname(dirname(__file__))) site_packages_dirs = getattr(site, "getsitepackages", lambda: [])() if level3_up_dir not in site_packages_dirs: site_packages_dirs.insert(0, level3_up_dir) for site_packages_dir in site_packages_dirs: pywin32_system32 = os.path.join(site_packages_dir, "pywin32_system32") if os.path.isdir(pywin32_system32): if hasattr(os, "add_dll_directory"): os.add_dll_directory(pywin32_system32) # 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(pywin32_system32): os.environ["PATH"] = os.environ["PATH"].replace(os.pathsep + pywin32_system32, "") os.environ["PATH"] = pywin32_system32 + os.pathsep + os.environ["PATH"] break