2017-01-03 8 views
3

Я признаю, что это сбой в установке с моей стороны, и я сожалею, что задал этот неинтересный и несущественный вопрос у ваших ног, но для жизни меня не могу понять что происходит не так, и у меня кончились идеи. Я надеюсь, что кто-то сможет быстро указать на очевидное.Python line_profiler не находит модуль

Я пытаюсь профилировать скрипт python (используя Kern's line_profiler), и скрипту необходимо загрузить модуль netCDF4. Я установил как line_profiler, так и netCDF4 с помощью 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/местные/бен/python, который указан первыми в моем PATH.

Итак, в любом случае, если установленная по умолчанию версия Python по умолчанию такая же, как у первой, которая появляется в моем PATH, и эта версия по умолчанию имеет доступ к модулю netCDF4, почему это не line_profiler?

+1

Вы можете импортировать какой-либо другой стандартный модуль 'import os', а затем' print (os .__ file __) ', чтобы увидеть, где находится стандартная библиотека при запуске профилировщика? –

+0

print (os._file_) дает: 'AttributeError: 'module' объект не имеет атрибута '_file_'' – Nordlendingen

+0

в порядке, неправильный выбор, встроенный модуль :): try' import csv; печать (CSV файл .__ __) '. Также: 'import sys; печать (sys.executable) '. Оба результата будут полезны. –

ответ

2

kernprof имеет shebang, который перенаправляет на установку 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 

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

+0

Затем я получаю сообщение об ошибке «не могу открыть файл« kernprof.py »: нет такого файла или каталога». Но вы очистили меня за то, что kernprof явно ищет не в том месте, и у меня проблема с смешиванием установок Python ... так что по крайней мере теперь я знаю, над чем работать. Благодаря! – Nordlendingen

+0

жаль, что я забыл полный путь к kernprof, потому что префикс python не использует PATH, а PYTHONPATH. Должен работать с моим редактированием. –

+0

Действительно! Еще раз спасибо!! – Nordlendingen

 Смежные вопросы

  • Нет связанных вопросов^_^