Skip to content

Python 3 compat: __import__ no longer accepts level=-1 #4

@jorisvandenbossche

Description

@jorisvandenbossche

__import__ in python 3 has a default of level=0, and -1 is no longer accepted (https://docs.python.org/3/library/functions.html#__import__)

So using this with python 3, you get

>>> import import_profiler
>>> from import_profiler import profile_import
>>> with profile_import() as context:
...     import pandas
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/home/joris/miniconda3/envs/dev/lib/python3.5/site-packages/import_profiler.py", line 149, in _profiled_import
    return self._original_importer(name, globals, locals, fromlist, level, *a, **kw)
  File "/home/joris/scipy/pandas/pandas/__init__.py", line 13, in <module>
    __import__(dependency)
  File "/home/joris/miniconda3/envs/dev/lib/python3.5/site-packages/import_profiler.py", line 149, in _profiled_import
    return self._original_importer(name, globals, locals, fromlist, level, *a, **kw)
ValueError: level must be >= 0

Not sure if just changing level to 0 in https://github.com/cournape/import-profiler/blob/master/import_profiler.py#L139 is the correct solution, but at least it seems to work locally by making that small patch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions