Python line_profiler не находит модуль
Я признаю, что это сбой установки с моей стороны, и мне жаль, что я ставлю этот неинтересный и несущественный вопрос у вас, но я не могу понять, что происходит не так, и я исчерпать идеи. Я надеюсь, что кто-то сможет быстро указать на очевидное.
Я пытаюсь профилировать скрипт на Python (используя line_profiler Керна), и скрипт должен загрузить модуль netCDF4. Я установил как line_profiler, так и netCDF4 с помощью pip. Оба сообщаются как присутствующие и обновляются, когда я ставлю в очередь pip для списка установленных пакетов.
Без использования профилировщика мой скрипт запускается без проблем, это означает, что модуль netCDF4 загружен правильно. Однако, если я запускаю 'kernprof -l -v myscript.py' из каталога "myscript", я получаю следующую ошибку:
Traceback (most recent call last):
File "/usr/local/bin/kernprof", line 9, in <module>
load_entry_point('line-profiler==1.0', 'console_scripts', 'kernprof')()
File "Library/Python/2.7/site-packages/kernprof.py", line 221, in main
execfile(script_file, ns, ns)
File "myscript.py", line 5, in <module>
from netCDF4 import Dataset
ImportError: No module named netCDF4
Я запускаю Python из установки в /opt/local/bin/python, который указан первым в моем PATH.
Итак, в любом случае, если версия Python по умолчанию, которую я установил, совпадает с той, которая появляется первой в моем PATH, и эта версия по умолчанию способна получить доступ к модулю netCDF4, почему не line_profiler?
1 ответ
kernprof
имеет shebang, который перенаправляет на установку Python по умолчанию, которая не имеет всех необходимых модулей.
Вы можете принудительно использовать "полную" установку Python, выполнив:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python /usr/local/bin/kernprof -l -v myscript.py
Поэтому shebang игнорируется, и вы запускаете профилировщик с версией python, содержащей все необходимые пакеты.