如果 python 代码在 Maya 的脚本编辑器中为 运行,则 PyCharm 无法捕获断点

PyCharm cannot catch breakpoints if the python code is running in Maya's Script Editor

我正在 PyCharm 中通过远程调试器为 Maya 调试 Python 代码。 如果命令行中的代码为 运行,远程调试器可以按预期捕获断点,但如果 Python 代码在 Maya 的脚本编辑器中为 运行ning,则无法执行此操作。

Python 代码 运行ning 在 Ubuntu 机器上,而 PyCharm 远程调试器 运行ning 在 Windows 上。

我在 Ubuntu 机器上从包含脚本的目录启动 Maya。 PyCharm 的路径映射简单地设置为“.”。对于包含相同 python 脚本的 Windows 路径。你能帮我解决这个问题吗?非常感谢。

断点仅供ide捕捉。 Maya 的脚本编辑器只是一个花哨的文本框

好的,我自己找到了答案。本来以为是路径映射设置的问题,现在发现是python代码调用方式的问题

在Windows上与PyCharm 运行ning的远程调试服务通信的pydevd,必须知道整个python脚本是什么是为了让它把这条信息传给PyCharm让它找到源头和对应的断点。如果我们直接在 Maya 脚本编辑器中 运行 python 脚本,例如单击 "Load Script" 按钮,目前是不可能的,因为 Maya 不够智能,无法让 pydevd 知道整个东西在脚本编辑器中是一个完整的 python 模块文件 -- 它本质上仍然是一个 line-wise python 解释器,只是以多行编辑器的形式给我们一些编辑方便。

所以关键是如何让pydevd知道整个python模块脚本是什么。这是通过 运行 将代码通过 import 来完成的。导入的应该是整个模块 python 代码也就不足为奇了。结果,在使用

在 Maya 中启动 pydevd 之后
import pydevd
pydevd.settrace('the.remote.debugger.IP', port=7720, stdoutToServer=True, stderrToServer=True)

,我们应该通过在脚本编辑器中键入

来调用我们想要调试的 python 代码
import theBuggyModule

这样,点击蓝色"Execute"图标后,脚本编辑器将停止响应,因为执行流程现在转移到PyCharm的远程调试器。有时 PyCharm 仍然难以识别源并因此捕获断点。在这种情况下,只需在PyCharm中新建的选项卡中单击"Auto-detect" link,源文件就应该在列表中。这只进行一次。请注意,这仅在按照我的问题中所述设置路径映射时才有效。如果不是,您应该正确设置映射,以便 PyCharm 可以在远程调试器服务 运行ning.

的远程计算机中找到源。

我知道我的回答并不完美,所以欢迎任何(正确的)补充内容。只是不要说:"That's not possible"、"You can only debug locally"、"It doesn't work like that" 或类似的东西。谢谢