我有一个要用python-mode调试的python脚本。我在this thread中读到可以用M-x pdb
调试python脚本,但是出现以下错误:
Searching for program: no such file or directory, pdb
我可以在minibuffer的提示符中提供python -m pdb my_source_file.py
,但是如果Emacs可以直接从我运行M-x pdb
的文件推断出这个命令,那就更好了
当我运行M-: exec-path
和M-: (getenv "PATH")
时,我得到不同的路径(由M-: (getenv "PATH")
返回的路径更长)。
有了这个:
pdb
在哪里?如何将其添加到Emacs路径?PATH
所保存的路径?
在shell提示符下键入
在Emacs中,键入
M-x customize
。选择“编程”>;“工具”>;“Gud”。将gud-pdb-command-name
的值设置为which pdb
返回的路径。如果您的Emacs版本为自定义菜单提供了不同的组织,您还可以尝试
然后单击
customize
链接,并在那里将路径设置为pdb
。尽管上面的说明不同,但我通过阅读"Running pdb under emacs"发现了这一点。
关于我先前的评论,以及你随后对这个问题的更新:
首先找出在终端中工作的
$PATH
的值。使用which pdb
查找pdb
可执行文件的位置。然后,在Emacs中显式设置
$PATH
环境变量,并将其同步到exec-path
,如下所示:您可能还需要显式地设置
PYTHONPATH
或类似的环境变量;您可以使用上面的“setenv”行这样的行,或者只使用exec-path-from-shell elisp package。更新
好的,结果是Emacs'
pdb
命令不是由python-mode
提供的,它希望找到一个名为“pdb”的可执行文件。解决这个问题的简单方法是在$PATH上的目录中创建一个名为“pdb”的shell包装器:(我发现一个提示这项技术的注释here。)
Windows下的等效文件是一个名为pdb.bat的文件,其中包含:
(该
-u
防止Python缓冲其输出。)要运行Python调试器,
M-x pdb
需要找到名为pdb
的可执行文件。虽然pdb
可执行文件可能存在于某些Python发行版中,但并非所有发行版都存在。解决这个问题的建议在GNU bug report #21521: pdb default suggested command中。
在修复错误之前,可以设置变量
gud-pdb-command-name
,以定义用于启动pdb的命令。在.emacs中,添加。。。相关问题 更多 >
编程相关推荐