Skip to content

Commit 33340ab

Browse files
committed
Use importlib instead of imp when using python3
This prevents obnoxious error messages each time a python file is opened in vim. Breaks compatibility with python 3 versions < 3.4, however.
1 parent 95fdf8f commit 33340ab

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

autoload/pymode/breakpoint.vim

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,24 @@ fun! pymode#breakpoint#init() "{{{
99

1010
PymodePython << EOF
1111

12-
from imp import find_module
12+
from six import PY3
13+
14+
if PY3:
15+
from importlib.util import find_spec
16+
def module_exists(module_name):
17+
return find_spec(module_name)
18+
else:
19+
from imp import find_module
20+
def module_exists(module_name):
21+
try:
22+
return find_module(module_name)
23+
except ImportError:
24+
return False
1325

1426
for module in ('wdb', 'pudb', 'ipdb', 'pdb'):
15-
try:
16-
find_module(module)
27+
if module_exists(module):
1728
vim.command('let g:pymode_breakpoint_cmd = "import %s; %s.set_trace() # XXX BREAKPOINT"' % (module, module))
1829
break
19-
except ImportError:
20-
continue
21-
2230
EOF
2331
endif
2432

pymode/libs/pkg_resources/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2168,9 +2168,17 @@ def _handle_ns(packageName, path_item):
21682168
importer = get_importer(path_item)
21692169
if importer is None:
21702170
return None
2171-
loader = importer.find_module(packageName)
2171+
2172+
if PY3:
2173+
loader = importer.find_spec(packageName)
2174+
else:
2175+
try:
2176+
loader = importer.find_module(packageName)
2177+
except ImportError:
2178+
loader = None
21722179
if loader is None:
21732180
return None
2181+
21742182
module = sys.modules.get(packageName)
21752183
if module is None:
21762184
module = sys.modules[packageName] = types.ModuleType(packageName)

0 commit comments

Comments
 (0)