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

时间:2016-02-17 15:29:03

标签: eclipse pydev canopy pythonpath pyxll

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

我想将PyDev交互式调试器附加到PyXLL"中运行的Python代码中。按照this linkthis link进行工作。

所以我做了以下事情:

  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

  5. 然而,结果,

    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.承诺没有新的菜单项。因此,我不知道如何调试。

    3. 有人可以帮忙吗?

      enter image description here

      PS:我的问题是pvdevd未在环境中插入良好,因为当我在代码中键入import时,pydevd不会自动建议为numpy等包1}}或numbers。但我真的很困惑在Eclipse中控制PYTHONPATHPATH

      修改1:

      我已将Windows控制面板中的PYTHONPATH设置为...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.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

      但是,虽然hello功能在Excel中有效,但Excel中不显示有关调试的菜单项。我的做法有问题吗?

1 个答案:

答案 0 :(得分:0)

不要在环境级别修改PYTHONPATHPATH,只需在import 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)永远不会在PATH中查找python模块。这就是PYTHONPATH的用途。在启动时,Python会将sys.path设置为PYTHONPATH +任何其他设置的内容。
  • pydevd非自动完成的可能性很大,因为PyDev不了解您对PYTHONPATH所做或打算做出的修改。您可以通过修改解释器设置来告诉PyDev。
  • eclipse_debug.py旨在简化与调试器的连接。您应该使用eclipse_debug.py方法或上述方法。但是,如果使用eclipse_debug.py,则必须更新文件顶部附近的路径。