2016-06-23 3 views
0

Я отлаживаю код Python для Maya через удаленный отладчик в PyCharm. Удаленный отладчик может поймать точки останова, как ожидалось, если код запускается в командной строке, но он не может этого сделать, если код Python запущен внутри редактора сценариев Maya.PyCharm не может поймать точки останова, если код Python запущен в редакторе скриптов Maya

Код Python работает на машине Ubuntu, а удаленный отладчик PyCharm работает в Windows.

Я запускаю Maya на машине Ubuntu из каталога, содержащего сценарий. Отображение пути PyCharm просто устанавливается на «.». для пути Windows, который содержит тот же скрипт python. Можете ли вы помочь мне с этой проблемой? Большое спасибо.

ответ

0

ОК, я сам нашел ответ. Я думал, что проблема связана с настройками отображения пути, но теперь выясняется, что она связана с тем, как вызывается код python.

pydevd, который связывается с удаленной службой отладки PyCharm, работающей в Windows, должен знать, что такое весь скрипт python, чтобы он мог передавать эту информацию в PyCharm, чтобы найти источник и соответствующие точки останова. В настоящее время это невозможно, если мы запускаем скрипт python непосредственно в Maya Script Editor, например, нажав кнопку «Загрузить сценарий», потому что Maya недостаточно умен, чтобы Pydevd знал, что весь материал в редакторе скриптов является полным модулем python file - он по-прежнему по сути является линейным интерпретатором python, только в виде многострочного редактора, который дает нам возможность редактирования.

Таким образом, ключ заключается в том, как дать pydevd знать, что такое весь скрипт модуля python. Это делается путем запуска кода через import. Неудивительно, что импортируемый должен быть целым модулем кода python. В результате, после запуска pydevd в Maya с помощью

import pydevd 
pydevd.settrace('the.remote.debugger.IP', port=7720, stdoutToServer=True, stderrToServer=True) 

, мы должны вызвать код питона, который мы хотим отладить, набрав в Script Editor

import theBuggyModule 

Таким образом, после нажатия синей «Выполнить» icon, редактор сценариев перестанет отвечать, потому что поток выполнения теперь передается удаленному отладчику PyCharm. Иногда PyCharm по-прежнему испытывает определенные трудности в распознавании источника и, следовательно, в обнаружении точек останова. В этом случае просто нажмите ссылку «Автоматическое обнаружение» на вновь созданной вкладке в PyCharm, и исходный файл должен быть в списке. Это делается только один раз. Обратите внимание, что это работает только тогда, когда карта пути задана, как описано в моем вопросе. Если нет, вы должны правильно установить сопоставление, чтобы PyCharm мог найти источник на удаленном компьютере, на котором запущена служба удаленного отладчика.

Я знаю, что мой ответ не идеален, поэтому любой (правильный) дополнительный материал приветствуется. Просто не говорите: «Это невозможно», «Вы можете только отлаживать локально», «Это не так» или что-то в этом роде. Благодарю.

0

Пункты перерыва предназначены только для идеи. Редактор сценариев Майи - это просто текстовое поле с фантастическими вещами

+0

Да, конечно, я имею в виду IDE PyCharm, чтобы поймать точку останова, и я запустил код Python в Maya Script Editor. – user5280911

+0

Что я имею в виду, так это то, что только идеал может интерпретировать точки останова, управляющие им только через ide. – cronicryo

+0

Я понятия не имею, о чем вы говорите. Кажется, что вы не знаете, что такое «удаленный отладчик». – user5280911

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