Issue #19713: Move away from using find_module/load_module.

This commit is contained in:
Eric Snow 2014-01-04 15:09:28 -07:00
parent d749c7ae68
commit 335e14dd1a
3 changed files with 12 additions and 5 deletions

View File

@ -6,6 +6,7 @@ Tools directory of a Python checkout or tarball, such as reindent.py.
import os
import sys
import importlib._bootstrap
import importlib.machinery
import unittest
from unittest import mock
@ -405,8 +406,8 @@ class PdepsTests(unittest.TestCase):
@classmethod
def setUpClass(self):
path = os.path.join(scriptsdir, 'pdeps.py')
loader = importlib.machinery.SourceFileLoader('pdeps', path)
self.pdeps = loader.load_module()
spec = importlib.util.spec_from_file_location('pdeps', path)
self.pdeps = importlib._bootstrap._SpecMethods(spec).load()
@classmethod
def tearDownClass(self):
@ -430,8 +431,8 @@ class Gprof2htmlTests(unittest.TestCase):
def setUp(self):
path = os.path.join(scriptsdir, 'gprof2html.py')
loader = importlib.machinery.SourceFileLoader('gprof2html', path)
self.gprof = loader.load_module()
spec = importlib.util.spec_from_file_location('gprof2html', path)
self.gprof = importlib._bootstrap._SpecMethods(spec).load()
oldargv = sys.argv
def fixup():
sys.argv = oldargv

View File

@ -255,6 +255,8 @@ Library
- Issue #6477: Added support for pickling the types of built-in singletons
(i.e., Ellipsis, NotImplemented, None).
- Issue #19713: Move away from using find_module/load_module.
- Issue #19851: Fixed a regression in reloading sub-modules.
- ssl.create_default_context() sets OP_NO_COMPRESSION to prevent CRIME.

View File

@ -3,6 +3,8 @@
import sys, os, importlib.machinery, re, optparse
from glob import glob
import importlib._bootstrap
import importlib.util
import sysconfig
from distutils import log
@ -327,8 +329,10 @@ class PyBuildExt(build_ext):
return
loader = importlib.machinery.ExtensionFileLoader(ext.name, ext_filename)
spec = importlib.util.spec_from_file_location(ext.name, ext_filename,
loader=loader)
try:
loader.load_module()
importlib._bootstrap._SpecMethods(spec).load()
except ImportError as why:
self.failed.append(ext.name)
self.announce('*** WARNING: renaming "%s" since importing it'