12345678910111213141516171819202122232425262728293031323334 |
- # 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
|