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/Pyth‌​on /usr/local/bin/kernprof -l -v myscript.py

Поэтому shebang игнорируется, и вы запускаете профилировщик с версией python, содержащей все необходимые пакеты.

Другие вопросы по тегам