首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PyDev交互式调试器附加到运行在PyXLL中的Python代码

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

Stack Overflow用户
提问于 2016-02-17 15:29:02
回答 1查看 657关注 0票数 1

(在Windows 10中,我已经安装了包含...\AppData\Local\Enthought\CanopyPython 2.7和另一个包含Python 3.5...\AppData\Local\Programs\Python\Python35%PATH指向冠层)

我想让“将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添加到%PATH (echo %PATH确实显示了这个路径,而echo %PYTHONPATH%仍然在命令提示符中返回%PYTHONPATH% )
  3. import pydevd;pydevd.settrace()添加到以前在Excel中工作的hello函数(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。但我真的很困惑于在Eclipse中控制PYTHONPATHPATH

编辑1:

我已经在PYTHONPATH的控制面板中设置为...eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc。因此,echo %PYTHONPATH%仍然在命令提示符中返回此路径。pydevd在日食中是自动完成的.

使用下面的代码,无需使用eclipse_debug.py,在启动debug server之后,执行就会在settrace行之后中断

代码语言:javascript
复制
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)只将debug.py的第一行修改为eclipse_roots = [r"C:\my_path_to\eclipse"]

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

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

代码语言:javascript
复制
from pyxll import xl_func
@xl_func("string name: string")
def hello(name):
    return "Hello, %s" % name

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

但是,虽然hello函数在Excel中工作,但在Excel中没有出现有关调试的菜单项。我的方法有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 21:30:22

与其在环境级别上修改PYTHONPATHPATH,不如在import pydevd;pydevd.settrace()之上执行import sys;sys.path.add(r'< full path to>eclipse/plugins/org.python.pydev_4.5.4.201601292234/pysrc')

所以你最终应该:

代码语言:javascript
复制
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,则必须更新文件顶部附近的路径。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35460931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档