Проблема
Большинство "магических функций" iPython отлично работают для меня сразу с места в карьер: %hist
, %time
, %prun
и т.д. Однако я заметил, что %lprun
не может быть найден с iPython, поскольку я первоначально установил его.
Попытка разрешить
Затем я обнаружил, что должен установить модуль line_profiler
. Я установил этот модуль, но по-прежнему не могу заставить магическую функцию работать правильно. Если я попытаюсь вызвать %lprun
, iPython все еще не сможет найти эту функцию. Если я назову его полным именем (line_profiler.magic_lprun
), функция может быть найдена, но я не могу заставить ее работать вообще. Ниже приведен пример того, что я сделал (который шаг за шагом выполняется из книги "Python for Data Analysis" ):
Успешное использование %prun
[В:]
def add_and_sum(x, y):
added = x + y
summed = added.sum(axis=1)
return summed
x = randn(3000, 3000)
y = randn(3000, 3000)
add_and_sum(x, y)
С этим я получаю приятный ответ, как и ожидалось:
[Выход:]
array([-23.6223074 , -10.08590736, -31.2957222 , ..., -14.17271747,
63.84057725, -50.28469621])
И я могу выполнить магическую функцию профилирования %prun
:
[В:]
%prun add_and_sum(x, y)
[Выход:]
6 function calls in 0.042 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.020 0.020 0.029 0.029 <ipython-input-27-19f64f63ba0a>:1(add_and_sum)
1 0.013 0.013 0.042 0.042 <string>:1(<module>)
1 0.009 0.009 0.009 0.009 {method 'reduce' of 'numpy.ufunc' objects}
1 0.000 0.000 0.009 0.009 _methods.py:16(_sum)
1 0.000 0.000 0.009 0.009 {method 'sum' of 'numpy.ndarray' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Сбой при использовании %lprun
Но когда я пытаюсь %lprun
, я ничего не могу получить:
[В:]
%lprun -f add_and_sum add_and_sum(x, y)
[Выход:]
ERROR: Line magic function `%lprun` not found.
И если я попытаюсь вызвать функцию со своим стандартным именем, она также не работает:
[В:]
line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)
[Выход:]
line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)
^
SyntaxError: invalid syntax
Но библиотека была импортирована правильно, или, по крайней мере, это то, что она говорит:
[В:]
line_profiler
[Выход:]
<module 'line_profiler' from '/Users/<edit>/anaconda/lib/python2.7/site-packages/line_profiler-1.0b3-py2.7-macosx-10.5-x86_64.egg/line_profiler.pyc'>
[В:]
line_profiler.magic_lprun
[Выход:]
<function line_profiler.magic_lprun>
Кажется, что есть что-то дополнительное, что я должен настроить так, чтобы эти новые магические функции, которые я добавляю, можно идентифицировать как таковые. Я не смог найти ничего через веб-поиск.
Я запускаю Spyder как IDE (все еще использую iPython в качестве консоли), но я также пробовал его напрямую с iPython и с iPython ноутбуком. Мне не повезло в любом формате.