Ame*_*ina 12 python debugging emacs
我有一个python脚本,我想用python-mode调试.我在这个帖子中读到我可以调试我的python脚本M-x pdb,但是我收到以下错误:
搜索程序:没有这样的文件或目录,pdb
我可以python -m pdb my_source_file.py在迷你缓冲区中提示,但如果Emacs可以直接从我运行的文件中推断出这个命令会很好M-x pdb
当我跑步M-: exec-path和跑步时,我得到不同的路径M-: (getenv "PATH")(返回的路径M-: (getenv "PATH") 更长).
有了这个:
pdb?如何将其添加到Emacs路径?PATH?继我之前的评论以及您对该问题的后续更新:
首先找出适合$PATH您终端的值.使用which pdb找出其中pdb的可执行的位置.
然后,$PATH在Emacs中显式设置环境变量,并将其同步到exec-path如下:
(setenv "PATH" "/usr/local/bin:/usr/bin:/bin:/some/other/dir")
(setq exec-path (split-string (getenv "PATH") path-separator))
Run Code Online (Sandbox Code Playgroud)
您可能还需要明确设置PYTHONPATH或类似的环境变量; 你可以使用上面的"setenv"行之类的行,或者只使用exec-path-from-shell elisp包.
更新
好的,事实证明Emacs的pdb命令不是由提供的python-mode,它希望找到一个名为"pdb"的可执行文件.解决这个问题的简单方法是在$ PATH的目录中创建一个名为"pdb"的shell包装器:
#!/bin/sh
exec python -m pdb "$@"
Run Code Online (Sandbox Code Playgroud)
(我在这里发现了一个说明这种技术的说明.)
Windows下的等效文件是一个名为pdb.bat的文件,其中包含:
python -u -m pdb %1
Run Code Online (Sandbox Code Playgroud)
(-u防止Python缓冲其输出.)
要运行Python调试器,M-x pdb需要查找名为的可执行文件pdb.虽然pdb可执行文件可能存在于某些Python发行版中,但它并不存在于所有Python发行版中.
修复此问题的建议是在GNU错误报告#21521中:pdb默认建议命令.
在修复错误之前,您可以设置变量gud-pdb-command-name以定义用于启动pdb的命令.在.emacs中,添加...
(setq gud-pdb-command-name "python -m pdb")
Run Code Online (Sandbox Code Playgroud)