调试用Python编写的Ubuntu Nautilus脚本的方法
在编写调试程序时(例如,使用Python),我目前知道两种基本调试方法:调试用Python编写的Ubuntu Nautilus脚本的方法,python,debugging,scripting,nautilus,Python,Debugging,Scripting,Nautilus,在编写调试程序时(例如,使用Python),我目前知道两种基本调试方法: 使用(如Zenity)弹出窗口作为“打印”语句 在文本文件中捕获stderr和stdout以供以后参考 这些方法相当有效,但我怀疑还有更有效的方法我不知道。有人能建议其他方法吗 编辑: 上下文:我在Nautilus中寻找调试从Ubuntu右键单击菜单启动的python脚本的方法 使用cedric关于重新启动nautilus时没有桌面选项的回答意味着stderr和stdout在终端窗口中可见。但是,该终端似乎不能用作pdb控
(另外,虽然我同意单元测试和日志记录是最佳实践,但我认为仍然有交互调试的空间,特别是对于小脚本。)使用PyUnit对脚本进行单元测试 这将比“打印”语句更有效,并且可以重复,以帮助您防止回归。它还将降低临时调试代码留在脚本中的风险
您要求的只是查看您的脚本输出,这可以通过重新启动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"
,它包含实际的Python脚本,并且从nautilus脚本菜单中隐藏:~/.local/share/nautilus/scripts/.secondfile.py
当然,这只是用于基本调试,但可能对某些人有用。如果您不能使用标准Python调试器pdb,您可能可以使用。感谢nautilus--没有桌面,非常有用!!
#!/usr/bin/python3
print("Hello")