Возможно ли отлаживать программу проклятия удаленно в PyCharm? Как настроить его?python curses удаленная отладка pdevd ошибка в setupterm
Я следовал инструкциям PyCharm 4.0.8, добавил это к «EXAMPLE.py
» с «npyscreen-4.8.7
».
import pydevd
pydevd.settrace('localhost', port=8899, stdoutToServer=False, stderrToServer=True)
И всегда впадает в ошибки в "setupterm
":
$ PYTHONPATH=~/bin/pycharm-debug.egg python EXAMPLE.py
Traceback (most recent call last):
File "EXAMPLE.py", line 34, in <module>
App.run()
File "/home/.../npyscreen-4.8.7/npyscreen/apNPSApplication.py", line 30, in run
return npyssafewrapper.wrapper(self.__remove_argument_call_main)
File "/home/.../npyscreen-4.8.7/npyscreen/npyssafewrapper.py", line 41, in wrapper
wrapper_no_fork(call_function)
File "/home/.../npyscreen-4.8.7/npyscreen/npyssafewrapper.py", line 83, in wrapper_no_fork
_SCREEN = curses.initscr()
File "/usr/lib64/python2.6/curses/__init__.py", line 33, in initscr
fd=_sys.__stdout__.fileno())
_curses.error: setupterm: could not find terminal
Проблема заключается в том, что pydevd изменилась среда "TERM" от "XTerm" в "Emacs". Это можно проверить с помощью небольшой тестовой программы.
import pydevd
pydevd.settrace('localhost', port=8899, stdoutToServer=False, stderrToServer=True)
import os as _os
import sys as _sys
import curses
print " my term: ", _os.environ.get("TERM", "unknown"), "\n"
print " my fd: ", _sys.__stdout__.fileno(), "\n"
print "\n ok 1 \n"
curses.setupterm(term=_os.environ.get("TERM", "unknown"),
#curses.setupterm(term='xterm',
fd=_sys.__stdout__.fileno())
print "\n ok 2 \n"
- При удалении двух линий с "
pdevd
", программа завершается успешно. «TERM
» распечатывается «xterm
». - Если изменить 1-й аргумент на «
setupterm
» на «term='xterm'
», даже с «pydevd
» он преуспевает.
Я думаю, вопрос в том, как «pydevd
» установить правильный «TERM
»?
Это выглядит хорошо, но не проверено мной, хотя я установил этот ответ как принятый. Спасибо за ответ. – minghua