Commit 33c9d86a authored by Andrew Murray's avatar Andrew Murray

Change load_module to exec_module

parent 5e60dc50
...@@ -55,11 +55,12 @@ def write_stub(resource, pyfile): ...@@ -55,11 +55,12 @@ def write_stub(resource, pyfile):
_stub_template = textwrap.dedent(""" _stub_template = textwrap.dedent("""
def __bootstrap__(): def __bootstrap__():
global __bootstrap__, __loader__, __file__ global __bootstrap__, __loader__, __file__
import sys, pkg_resources import sys, pkg_resources, importlib.util
from importlib.machinery import ExtensionFileLoader
__file__ = pkg_resources.resource_filename(__name__, %r) __file__ = pkg_resources.resource_filename(__name__, %r)
__loader__ = None; del __bootstrap__, __loader__ __loader__ = None; del __bootstrap__, __loader__
ExtensionFileLoader(__name__,__file__).load_module() spec = importlib.util.spec_from_file_location(__name__,__file__)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
__bootstrap__() __bootstrap__()
""").lstrip() """).lstrip()
with open(pyfile, 'w') as f: with open(pyfile, 'w') as f:
......
...@@ -254,8 +254,8 @@ class build_ext(_build_ext): ...@@ -254,8 +254,8 @@ class build_ext(_build_ext):
'\n'.join([ '\n'.join([
"def __bootstrap__():", "def __bootstrap__():",
" global __bootstrap__, __file__, __loader__", " global __bootstrap__, __file__, __loader__",
" import sys, os, pkg_resources" + if_dl(", dl"), " import sys, os, pkg_resources, importlib.util" +
" from importlib.machinery import ExtensionFileLoader", if_dl(", dl"),
" __file__ = pkg_resources.resource_filename" " __file__ = pkg_resources.resource_filename"
"(__name__,%r)" "(__name__,%r)"
% os.path.basename(ext._file_name), % os.path.basename(ext._file_name),
...@@ -267,8 +267,10 @@ class build_ext(_build_ext): ...@@ -267,8 +267,10 @@ class build_ext(_build_ext):
" try:", " try:",
" os.chdir(os.path.dirname(__file__))", " os.chdir(os.path.dirname(__file__))",
if_dl(" sys.setdlopenflags(dl.RTLD_NOW)"), if_dl(" sys.setdlopenflags(dl.RTLD_NOW)"),
" ExtensionFileLoader(__name__,", " spec = importlib.util.spec_from_file_location(",
" __file__).load_module()", " __name__, __file__)",
" mod = importlib.util.module_from_spec(spec)",
" spec.loader.exec_module(mod)",
" finally:", " finally:",
if_dl(" sys.setdlopenflags(old_flags)"), if_dl(" sys.setdlopenflags(old_flags)"),
" os.chdir(old_dir)", " os.chdir(old_dir)",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment