| import distutils.spawn |
| import os |
| import sys |
| |
| |
| def find_executable(executable, path=None): |
| """ |
| As distutils.spawn.find_executable, but on Windows, look up |
| every extension declared in PATHEXT instead of just `.exe` |
| """ |
| if sys.platform != 'win32': |
| return distutils.spawn.find_executable(executable, path) |
| |
| if path is None: |
| path = os.environ['PATH'] |
| |
| paths = path.split(os.pathsep) |
| extensions = os.environ.get('PATHEXT', '.exe').split(os.pathsep) |
| base, ext = os.path.splitext(executable) |
| |
| if not os.path.isfile(executable): |
| for p in paths: |
| for ext in extensions: |
| f = os.path.join(p, base + ext) |
| if os.path.isfile(f): |
| return f |
| return None |
| else: |
| return executable |
| |
| |
| def create_environment_dict(overrides): |
| """ |
| Create and return a copy of os.environ with the specified overrides |
| """ |
| result = os.environ.copy() |
| result.update(overrides or {}) |
| return result |