Режим Python в Emacs: нет такого файла или каталога, pdb
у меня есть скрипт python, который я хочу отладить с python-mode. Я читаю в этой теме что я могу отладить свой скрипт python с помощью M-x pdb
, но я получаю следующую ошибку:
поиск программы: нет такого файла или каталога, pdb
Я могу предоставить python -m pdb my_source_file.py
в командной строке в минибуфере, но было бы неплохо, если Emacs может вывести эту команду непосредственно из файла, на котором я бегаю M-x pdb
обновление:
работает на:
- Red Hat Enterprise Linux Server версии 5.1 (Tikanga)
- Emacs 23.3.1
различия между путями
Я получаю разные пути, когда я бегу M-: exec-path
и когда я запускаю M-: (getenv "PATH")
(возвращаемый M-: (getenv "PATH")
больше).
С этого:
- где
pdb
расположены? Как добавить его в путь Emacs? - есть ли способ попросить Emacs и посмотрите на пути, удерживаемые переменной окружения
PATH
?
5 ответов
далее к моему комментарию ранее, и Ваше последующее обновление к вопросу:
сначала выясните значение для $PATH
, которая работает в вашем терминале. Использовать which 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))
возможно, Вам также потребуется явно установить PYTHONPATH
или аналогичные переменные среды; вы можете сделать это используя строки, подобные строке "setenv" выше, или просто используйте exec-path-from-shell elisp package.
обновление
хорошо, так получается Emacs'
для запуска отладчика Python M-x pdb
рассчитывает найти исполняемый файл с именем pdb
. В то время как pdb
исполняемый файл может существовать в некоторых дистрибутивах Python, он не существует во всех из них.
предложение исправить это GNU отчет об ошибке #21521: pdb по умолчанию предложил команду.
пока ошибка не исправлена, вы можете установить переменную gud-pdb-command-name
чтобы определить команду, используемую для запуска pdb. В.emacs, add...
(setq gud-pdb-command-name "python -m pdb")
в командной строке введите
which pdb
в Emacs, типа M-x customize
. Выберите Программирование > Инструменты > Gud. Установите значение gud-pdb-command-name
на путь, возвращенный which pdb
.
если ваша версия Emacs представляет другую организацию для меню Настройки, вы также можете попробовать
C-h v gud-pdb-command-name
затем нажмите на кнопку customize
ссылка и установите путь к pdb
там.
хотя приведенные выше инструкции отличаются, я обнаружил это, прочитав "запуск pdb под emacs" .
вы можете создать пользовательскую команду:
;; PDB command line
(defun user-python-debug-buffer ()
"Run python debugger on current buffer."
(interactive)
(setq command (format "python -u -m pdb %s " (file-name-nondirectory buffer-file-name)))
(let ((command-with-args (read-string "Debug command: " command nil nil nil)))
(pdb command-with-args)))
в Emacs 23.3.1 и предположительно выше, еще один вариант-использовать оболочку Emacs,решение eshell (M-x eshell
). Под Eshell существует уже существующее, основанное на Lisp определение pdb. Эти функции Lisp работают в Eshell так же, как обычные команды оболочки.
Так pdb "./manage.py runserver"
запустит сервер Django, например.