deploy-ng: Fix for finding Python extension modules when not running the frozen binary in the binary's directory

This commit is contained in:
Mitchell Stokes 2017-08-19 21:36:06 -07:00
parent 894fe56d57
commit dcef0c3c5d

View File

@ -1658,7 +1658,8 @@ class Freezer:
# trouble importing it as a builtin module. Synthesize a frozen
# module that loads it dynamically.
if '.' in moduleName:
code = compile('import sys;del sys.modules["%s"];import imp;imp.load_dynamic("%s", "%s%s")' % (moduleName, moduleName, moduleName, modext), moduleName, 'exec')
code = 'import sys;import os;del sys.modules["%s"];import imp;imp.load_dynamic("%s",os.path.join(os.path.dirname(sys.executable), "%s%s"))' % (moduleName, moduleName, moduleName, modext)
code = compile(code, moduleName, 'exec')
code = marshal.dumps(code)
moduleList.append(make_module_list_entry(code, codeOffset, moduleName, module))
moduleBlob += code