擅长:python、mysql、java
<p>关于我先前的评论,以及你随后对这个问题的更新:</p>
<p>首先找出在终端中工作的<code>$PATH</code>的值。使用<code>which pdb</code>查找<code>pdb</code>可执行文件的位置。</p>
<p>然后,在Emacs中显式设置<code>$PATH</code>环境变量,并将其同步到<code>exec-path</code>,如下所示:</p>
<pre><code>(setenv "PATH" "/usr/local/bin:/usr/bin:/bin:/some/other/dir")
(setq exec-path (split-string (getenv "PATH") path-separator))
</code></pre>
<p>您可能还需要显式地设置<code>PYTHONPATH</code>或类似的环境变量;您可以使用上面的“setenv”行这样的行,或者只使用<a href="https://github.com/purcell/exec-path-from-shell" rel="noreferrer">exec-path-from-shell elisp package</a>。</p>
<p><em>更新</em></p>
<p>好的,结果是Emacs'<code>pdb</code>命令不是由<code>python-mode</code>提供的,它希望找到一个名为“pdb”的可执行文件。解决这个问题的简单方法是在$PATH上的目录中创建一个名为“pdb”的shell包装器:</p>
<pre><code>#!/bin/sh
exec python -m pdb "$@"
</code></pre>
<p>(我发现一个提示这项技术的注释<a href="http://wiki.python.org/moin/EmacsEditor" rel="noreferrer">here</a>。)</p>
<p>Windows下的等效文件是一个名为pdb.bat的文件,其中包含:</p>
<pre><code>python -u -m pdb %1
</code></pre>
<p>(该<code>-u</code>防止Python缓冲其输出。)</p>