Fixes to make python distribution for windows work

This commit is contained in:
Andrew Dutcher
2016-11-04 19:56:31 -07:00
parent f8e82485da
commit 876570c8d7
3 changed files with 89 additions and 32 deletions

View File

@ -30,15 +30,32 @@ _all_windows_dlls = (
"libgcc_s_seh-1.dll",
"libgcc_s_dw2-1.dll",
"libiconv-2.dll",
"libpcre-1.dll",
"libintl-8.dll",
"libglib-2.0-0.dll",
)
_loaded_windows_dlls = set()
def _load_win_support(path):
for dll in _all_windows_dlls:
if dll in _loaded_windows_dlls:
continue
lib_file = os.path.join(path, dll)
if os.path.exists(lib_file):
ctypes.cdll.LoadLibrary(lib_file)
if ('/' not in path and '\\' not in path) or os.path.exists(lib_file):
try:
#print('Trying to load windows library', lib_file)
ctypes.cdll.LoadLibrary(lib_file)
#print('SUCCESS')
_loaded_windows_dlls.add(dll)
except OSError:
#print('FAILURE')
continue
# Initial attempt: load all dlls globally
if sys.platform in ('win32', 'cygwin'):
_load_win_support('')
def _load_lib(path):
try:
@ -46,8 +63,12 @@ def _load_lib(path):
_load_win_support(path)
lib_file = os.path.join(path, _lib)
return ctypes.cdll.LoadLibrary(lib_file)
#print('Trying to load shared library', lib_file)
dll = ctypes.cdll.LoadLibrary(lib_file)
#print('SUCCESS')
return dll
except OSError:
#print('FAILURE')
return None
_uc = None