Emacs 中的 Python 模式 : No such file or directory, pdb

标签 python debugging emacs

我有一个 python 脚本,我想用 python-mode 调试它.我读了 this thread我可以使用 M-x pdb 调试我的 python 脚本,但是我收到以下错误:

Searching for program: no such file or directory, pdb

我可以在迷你缓冲区的提示中提供 python -m pdb my_source_file.py,但如果 Emacs 可以直接从我运行 M-x 的文件中推断出这个命令就好了pdb

更新:

运行于:

  • 红帽企业 Linux 服务器版本 5.1 (Tikanga)
  • Emacs 23.3.1

路径之间的差异

我在运行 M-: exec-path 和运行 M-: (getenv "PATH") 时得到不同的路径(由 M-: (getenv "PATH") 更长)。

有了这个:

  • pdb 位于何处?如何将它添加到 Emacs 路径?
  • 有没有办法让 Emacs 同时查看环境变量 PATH 持有的路径?

最佳答案

根据我之前的评论以及您随后对问题的更新:

首先找出适用于您的终端的 $PATH 的值。使用 which pdb 查找 pdb 可执行文件所在的位置。

然后,在Emacs中显式设置$PATH环境变量,同步到exec-path如下:

(setenv "PATH" "/usr/local/bin:/usr/bin:/bin:/some/other/dir")
(setq exec-path (split-string (getenv "PATH") path-separator))

您可能还需要显式设置 PYTHONPATH 或类似的环境变量;您可以使用上面的“setenv”行之类的行来做到这一点,或者只使用 exec-path-from-shell elisp package .

更新

好吧,原来 Emacs 的 pdb 命令不是由 python-mode 提供的,它希望找到一个名为“pdb”的可执行文件。解决此问题的简单方法是在 $PATH 上的目录中创建一个名为“pdb”的 shell 包装器:

#!/bin/sh
exec python -m pdb "$@"

(我发现了一个注释 here 建议使用这种技术。)

Windows 下的等价物是一个名为 pdb.bat 的文件,其中包含:

python -u -m pdb %1

(-u 阻止 Python 缓冲其输出。)

关于Emacs 中的 Python 模式 : No such file or directory, pdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167614/

相关文章:

python - 你如何制作 numpy 数组的 ggplot 图?

python - 从列表中提取值并生成元组

android - Eclipse Debug模式和异常

emacs - 如何定义特殊的键盘快捷键来杀死 Emacs 中的 View 文件缓冲区

python - 对 Pandas DataFrame 列表求和

python - 返回语句困惑..我不确定语法

javascript - 如何使用IntelliJ IDEA调试器调试Nashorn JavaScript?

debugging - 是否有任何 Debug模式?

emacs - 在 emacs 中创建多个 eshell 实例

emacs - VS 代码 : indent single line with tab