##// END OF EJS Templates
Fix extension detection...
Fix extension detection If the path leading up to the Python installation's `site-packages` contains a `.`, this check does not do what it says it does :( For instance, on macOS, the `site-packages` directory is located at `/usr/local/lib/python3.7/site-packages`, which means that trying to use the magic `%run -m my.module` will always fail, because `split_path[1]` will always start with `7/site-packages`. There are better ways to check that a file extension matches expectations, but I thought it was cute that I could fix this bug by inserting a single character :) My current workaround looks like this: ```python import importlib import_path = importlib.util.find_spec('my.module').origin %run $import_path ```

File last commit:

r11031:ffddf45f
r24836:525c7fe6
Show More
test_importstring.py
39 lines | 1.2 KiB | text/x-python | PythonLexer
"""Tests for IPython.utils.importstring."""
#-----------------------------------------------------------------------------
# Copyright (C) 2013 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import nose.tools as nt
from IPython.utils.importstring import import_item
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
def test_import_plain():
"Test simple imports"
import os
os2 = import_item('os')
nt.assert_true(os is os2)
def test_import_nested():
"Test nested imports from the stdlib"
from os import path
path2 = import_item('os.path')
nt.assert_true(path is path2)
def test_import_raises():
"Test that failing imports raise the right exception"
nt.assert_raises(ImportError, import_item, 'IPython.foobar')