1

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

我想通过此链接此链接使“将 PyDev 交互式调试器附加到在 PyXLL 中运行的 Python 代码”工作。

所以我做了以下事情:

  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%仍然%PYTHONPATH%在命令提示符中返回)

  3. 添加import pydevd;pydevd.settrace()hello之前在 Excel 中工作的函数中(hello("abc")确实返回Hello, abc)。

  4. 在 Excel 中重新加载 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. 但我真的对控制PYTHONPATHPATH在 Eclipse 内部感到困惑。

编辑1:

我已经PYTHONPATH在 Windows 的控制面板中设置为...eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc. 结果,echo %PYTHONPATH%仍然在命令提示符中返回此路径。并且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.pypyxll.cfg

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

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

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

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

4

1 回答 1

0

而不是在环境级别修改PYTHONPATHor ,只需在PATHimport sys;sys.path.add(r'< full path to>eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc')import pydevd;pydevd.settrace()

所以你应该最终得到:

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) 从不寻找PATHpython 模块。这就是PYTHONPATH目的。在启动时,Python 将设置sys.pathPYTHONPATH+ 任何其他设置的内容。
  • pydevd不自动完成很可能是因为您 PyDev 不知道您对PYTHONPATH. 您可以通过修改解释器设置来告诉 PyDev。
  • eclipse_debug.py旨在简化与调试器的连接。您应该使用eclipse_debug.py方法或上述方法。但是,如果您使用,则eclipse_debug.py必须更新文件顶部附近的路径。
于 2016-02-17T21:30:22.760 回答