调试用Python编写的Ubuntu Nautilus脚本的方法

调试用Python编写的Ubuntu Nautilus脚本的方法,python,debugging,scripting,nautilus,Python,Debugging,Scripting,Nautilus,在编写调试程序时(例如,使用Python),我目前知道两种基本调试方法: 使用(如Zenity)弹出窗口作为“打印”语句 在文本文件中捕获stderr和stdout以供以后参考 这些方法相当有效,但我怀疑还有更有效的方法我不知道。有人能建议其他方法吗 编辑: 上下文:我在Nautilus中寻找调试从Ubuntu右键单击菜单启动的python脚本的方法 使用cedric关于重新启动nautilus时没有桌面选项的回答意味着stderr和stdout在终端窗口中可见。但是,该终端似乎不能用作pdb控

在编写调试程序时(例如,使用Python),我目前知道两种基本调试方法:

  • 使用(如Zenity)弹出窗口作为“打印”语句
  • 在文本文件中捕获stderr和stdout以供以后参考
  • 这些方法相当有效,但我怀疑还有更有效的方法我不知道。有人能建议其他方法吗

    编辑:

    上下文:我在Nautilus中寻找调试从Ubuntu右键单击菜单启动的python脚本的方法

    使用cedric关于重新启动nautilus时没有桌面选项的回答意味着stderr和stdout在终端窗口中可见。但是,该终端似乎不能用作pdb控制台进行调试(它似乎只是输出)

    在我搜索从右键单击菜单启动脚本过程时获得对脚本过程的输入和输出访问权限的方法时,我找到了下面答案中列出的信息


    (另外,虽然我同意单元测试和日志记录是最佳实践,但我认为仍然有交互调试的空间,特别是对于小脚本。)

    使用PyUnit对脚本进行单元测试

    这将比“打印”语句更有效,并且可以重复,以帮助您防止回归。它还将降低临时调试代码留在脚本中的风险

  • 调试器(pdb或Winpdb)

  • 使用python的日志模块

  • 使用调试装饰器-请参阅

  • 更多有用的提示


  • 您要求的只是查看您的脚本输出,这可以通过重新启动nautilus来实现--无桌面选项:

    $ nautilus -q
    $ nautilus --no-desktop
    

    这样,您将看到脚本或python解释器生成的任何输出(stderr/stdout)。应该是有用的…

    在从Nautilus右键单击菜单的“脚本”子菜单中搜索一种方法来获得python脚本的交互式调试后,我找到了以下解决方案

    可以使用WingIDE监听并连接到外部进程。这使得可以对外部启动的代码(如我的Python Nautilus脚本)使用WingIDE调试功能

    我只需要打开WingIDE首选项“启用被动侦听”,然后将wingdbstub.py复制到脚本目录。然后我在脚本中添加了“importwingdbstub”,并在脚本代码中设置了一个断点,在Wing中打开

    当我从Nautilus右键单击菜单运行脚本时,进程连接到WingIDE,我能够使用WingIDE的所有调试功能


    此处的详细信息:。

    为了查看输出并与终端中的脚本交互,我将脚本拆分为两个文件(请参见问题):

    • ~/.local/share/nautilus/scripts/firstfile.sh
      打开终端,执行其中的脚本,并保持其打开状态:

      #!/bin/bash
      gnome-terminal -- bash -c "python3 ~/.local/share/nautilus/scripts/.secondfile.py; bash"
      
    • ~/.local/share/nautilus/scripts/.secondfile.py
      ,它包含实际的Python脚本,并且从nautilus脚本菜单中隐藏:


    当然,这只是用于基本调试,但可能对某些人有用。

    如果您不能使用标准Python调试器pdb,您可能可以使用。感谢nautilus--没有桌面,非常有用!!
    #!/usr/bin/python3
    print("Hello")