将 PyDev 交互式调试器附加到 PyXLL 中的 Python 代码 运行

Attach the PyDev interactive debugger to Python code running in PyXLL

(在 Windows 10 中,我安装了包含 Python 2.7...\AppData\Local\Enthought\Canopy,以及包含 Python 3.5 的另一个 ...\AppData\Local\Programs\Python\Python35%PATH指向 Canopy)

我想通过关注 this link and this link 让 "attaching the PyDev interactive debugger to Python code running in PyXLL" 工作。

所以我做了以下事情:

  1. eclipse_debug.py 保存在文件夹 ...\AppData\Local\Enthought\Canopy\User\Lib\site-packages\pyxll\examples\ 中,并使 pyxll.cfg 包含 eclipse_debug.py

  2. eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc 添加到 %PATHecho %PATH 确实显示了这条路径,而 echo %PYTHONPATH% 仍然 returns %PYTHONPATH% 在命令提示符下)

  3. import pydevd;pydevd.settrace() 添加到 hello 函数,该函数之前在 Excel 中起作用(hello("abc") 做了 return Hello, abc).

  4. 在 Excel

  5. 中重新加载了 PyXll

然而,结果,

  1. hello 功能不再起作用

  2. 没有This module adds an Excel menu item to attach to the PyDev debugger, and also an Excel macro so that this script can be run outside of Excel and call PyXLL to attach to the PyDev debugger.承诺的新菜单项所以不知道怎么调试

有人能帮忙吗?

PS:我的问题是pvdevd没有很好地插入环境,因为我在代码中输入import时,没有自动提示pydevd作为包,例如 numpynumbers。但是我真的很困惑在 Eclipse 中控制 PYTHONPATHPATH

编辑 1:

我在Windows的控制面板中设置PYTHONPATH...eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc。结果,echo %PYTHONPATH% 在命令提示符中仍然 return 这条路径。 pydevd 在 eclipse 中自动完成。

使用以下代码,不使用 eclipse_debug.py,启动 debug server 后,执行在 settrace:

行后中断
from pyxll import xl_func
@xl_func("string name: string")
def hello(name):
    import pydevd;pydevd.settrace()
    return "Hello, %s" % name

现在,我想效仿eclipse_debug.py的方式。我做了以下事情:

1)在Windows的控制面板中擦除PYTHONPATH(所以,我想靠eclipse_debug.py找到路径)

2) 只修改eclipse_debug.py的第一行为eclipse_roots = [r"C:\my_path_to\eclipse"].

3) 将 eclipse_debug.py 添加到 pyxll.cfg

4) 使用如下代码定义函数hello:

from pyxll import xl_func
@xl_func("string name: string")
def hello(name):
    return "Hello, %s" % name

5) 启动eclipse debug server,然后启动Excel,然后重新加载PyXLL

然而,Excel 中没有出现有关调试的菜单项,尽管 hello 功能在 Excel 中有效。我的方法有问题吗?

无需在环境级别修改 PYTHONPATHPATH,只需在 import pydevd;pydevd.settrace()

上方执行 import sys;sys.path.add(r'< full path to>eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc')

所以你最终应该得到:

import sys
sys.path.add(r'< full path to>eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc')
import pydevd
pydevd.settrace()

回答您的一些相关问题:

  • Python (AFAIK) 不会在 PATH 中查找 python 模块。这就是 PYTHONPATH 的用途。在启动时 Python 会将 sys.path 设置为 PYTHONPATH 的内容 + 任何其他设置。
  • pydevd 没有自动完成很可能是因为您的 PyDev 不知道您对 PYTHONPATH 所做的或打算进行的修改。你可以通过修改解释器设置来告诉 PyDev。
  • eclipse_debug.py 旨在简化与调试器的连接。您应该使用 eclipse_debug.py 方法或上述方法。但是,如果您使用 eclipse_debug.py,则必须更新文件顶部附近的路径。