从MinGW和Emacs调用的pydb问题

时间:2010-11-22 17:57:24

标签: python emacs mingw

我正在尝试在Windows 7中运行的MinGW环境中运行emacs的pydb 1.26。我目前运行的python是python26虽然我已经尝试使用python25,结果相同。阅读文档并查看视频似乎表明,为了开始在GUD中使用pydb,我所要做的就是:pydb myprogram.py

不幸的是情况并非如此。当我在emacs的shell中发出“pydb myprogram.py”时,我得到:

 
pydb tetris.py
Traceback (most recent call last):
  File "c:/MinGW/msys/1.0/local/bin/pydb", line 19, in 
    import fns
ImportError: No module named fns

I have tried the altenative invocation of

python -t /c/python26/Lib/site-packages/pydb/pydb.py /c/fullpath/myprogram.py

似乎满足所有依赖项,但是在执行此操作时,操作系统似乎产生了python进程,但它永远不会回来。

直接从emacs发出这两个调用中的任何一个(没有中间shell)会生成相同的结果。

我做错了什么?我确信我之前有这个工作但由于磁盘崩溃而丢失了环境。

TIA。

1 个答案:

答案 0 :(得分:0)

我认为这里有很多混乱。在如何安装emacs,python和pydb方面,你的设置也很模糊。

pydb带有GNU Emacs代码,它挂钩到Emacs Lisp包GUD(大型统一调试器)。让我们把它暂时放在一边,因为这与你无法在emacs shell中运行pydb无关。

我假设您从源代码安装pydb,因为没有ez_install或egg。当您运行“configure”脚本以及“make”安装时,会给出一些信息,告诉您它将在何处安装以及发生了什么。其中一些对于跟踪是很重要的。

举例来说,这是从Windows XP的VMWare映像中的mingw终端运行时获得的一些信息:

$ ./autogen.sh
configure.ac:120: installing `./install-sh'
configure.ac:120: installing `./missing'
emacs/Makefile.am:22: installing `./elisp-comp'
...
Running ./configure --enable-maintainer-mode ...
checking for emacs... no
checking for xemacs... no
checking where .elc files should go... ${datadir}/emacs/site-lisp
checking for emacs... no
checking for emacs... no
checking where .elc files should go... (cached) ${datadir}/emacs/site-lisp
checking for a Python interpreter with version >= 2.4.0... python
checking for python... /c/Python27//python
checking for python version... 2.7
checking for python platform... win32
checking for python script directory... ${prefix}\Lib\site-packages
checking for python extension module directory... ${exec_prefix}\Lib\site-packages
...
Now type `make' to compile
$

当我运行“make install”时,其中一些输出是:

$ make install
Making install in test
...
test -z "c:\Python27\lib\site-packages/pydb" || /bin/mkdir -p "c:\Python27\lib\site-packages/pydb"
...
test -z "c:\Python27\lib\site-packages/pydb" || /bin/mkdir -p "c:\Python27\lib\site-packages/pydb"
...
if ! test -d "/usr/local/bin"; then \
      test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"; \
    fi

...

从上面的内容来看,在我的例子中,您会看到该软件包安装在 c:/ Python27 / lib / site-packages 中。你可能会使用Python26,因为你使用的是2.6版本。

此外,上面的输出显示 pydb 脚本安装在 / usr / local / bin 中。

大。现在我需要确保在PYTHONPATH环境变量中设置c:/ Python27 / lib / site-packages,该变量被送入sys.path。要查看sys.path中的内容:

python -c 'import sys; print sys.path'

由于遇到问题,您可能找不到sys.path中安装pydb的位置。所以在这里添加我使用的导出命令:

$ export PYTHONPATH='c:/Python27/lib/site-packages/pydb;.'

现在当我运行位于 / usr / local / bin 中的 pydb 作为上面指出的“make install”时,我得到:

$ /usr/local/bin/pydb  test/gcd.py 3 5
(c:\cygwin\home\rocky\src\external-vcs\pydb\test\gcd.py:10):  <module>
10 """

不要担心上面的cygwin,这就是我想要调试的Python脚本的位置。

这是在MinGW shell中完成的。要在Emacs shell中运行,它取决于Emacs的编译方式。

最后写完所有这些后,让我说, pydb 和挂钩到GUD的Emacs代码现在有点不赞成了。更新更好的调试器是http://code.google.com/p/pydbgr/提供的pydbgr,新的更好的Emacs代码在github.com/rocky/emacs-dbgr上。唉,它们都需要安装其他Python或Emacs软件包。在Python方面,如果你运行virtualenv,就会有鸡蛋来简化这个。在Emacs方面,包装的步骤更多。