проблемы pydb при вызове из MinGW и из Emacs - PullRequest
0 голосов
/ 22 ноября 2010

Я пытаюсь запустить pydb 1.26 из emacs в среде MinGW, работающей в Windows 7. Python, который я сейчас запускаю, это python26, хотя я пробовал это с python25 с теми же результатами.Чтение документации и просмотр видео, похоже, указывают на то, что для того, чтобы начать использовать pydb с GUD, все, что мне нужно сделать, это: pydb myprogram.py

К сожалению, это не так.Когда я запускаю «pydb myprogram.py» в оболочке внутри emacs, я получаю:

<code>
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

Я пробовал альтернативный вызов

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

, который, кажется, удовлетворяет всем зависимостям, однако при этом ОС, кажется, порождает процесс python, но никогдавозвращается.

Выполнение любого из этих двух вызовов непосредственно из emacs (без промежуточной оболочки) приводит к тому же результату.

Что я делаю не так?Я уверен, что раньше это работало, но я потерял среду из-за сбоя диска.

TIA.

1 Ответ

0 голосов
/ 25 ноября 2010

Я думаю, здесь много путаницы.Также много неопределенности с точки зрения того, как вы настроены с точки зрения того, как вы установили emacs, python и pydb.

pydb поставляется с кодом GNU Emacs, который подключается к пакету Emacs Lisp GUD (большой унифицированный отладчик)).Давайте пока оставим это в стороне, поскольку это не имеет никакого отношения к тому, что вы не можете запустить pydb скажем в оболочке emacs.

Я предполагаю, что вы устанавливаете pydb из исходного кода, поскольку в нем нет ez_install или eggдля этого.Когда вы запускаете скрипт «configure», а также «make» install, появляется некоторая информация, которая сообщает вам, где он собирается что-то установить и что происходит.Некоторое из этого важно отслеживать.

В качестве примера вот некоторая информация, которую я получил при запуске с терминала mingw внутри образа VMWare Windows XP:

$ ./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 / сайт-пакеты .Вероятно, у вас там будет Python26, поскольку вы используете версию 2.6.

Кроме того, вышеприведенный вывод показывает, что скрипт pydb установлен в / usr / local / bin .

Отлично.Теперь мне нужно убедиться, что c: / Python27 / lib / site-packages установлен в переменной окружения PYTHONPATH, которая подается в sys.path.Чтобы увидеть, что находится в sys.path, выполните:

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

Поскольку у вас возникли проблемы, вы, вероятно, не найдете, где pydb установлен в sys.path.Итак, чтобы добавить, что вот команда экспорта, которую я использовал:

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

Теперь, когда я запускаю pydb , которая находится в / usr / local / bin as "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.Чтобы запустить в оболочке Emacs, это зависит от того, как Emacs был скомпилирован.

Наконец, после написания всего этого, позвольте мне сказать, что и pydb , и код Emacs, который подключается к GUD, теперь немного устарели.Более новый и лучший отладчик - pydbgr, доступный с http://code.google.com/p/pydbgr/, а новый и лучший код Emacs - на github.com/rocky/emacs-dbgr.Увы, оба требуют установки других пакетов Python или Emacs.На стороне Python есть яйца, чтобы упростить это, если вы не запускаете virtualenv.На стороне Emacs упаковка - увы, больше шагов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...