Невозможно запустить / отладить файл Django manage.py из Eclipse - PullRequest
4 голосов
/ 07 апреля 2011

Всякий раз, когда я пытаюсь отладить Django manage.py из Eclipse, я получаю:

pydev debugger: warning: psyco not available for speedups (the debugger will still work correctly, but a bit slower)
pydev debugger: starting
Traceback (most recent call last):
  File "/proj/virtualenvs/testing/infocards/manage.py", line 15, in <module>
    execute_manager(settings)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/core/management/commands/runserver.py", line 67, in handle
    self.run(*args, **options)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/core/management/commands/runserver.py", line 76, in run
    autoreload.main(self.inner_run, args, options)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/utils/autoreload.py", line 131, in main
    reloader(main_func, args, kwargs)
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/utils/autoreload.py", line 104, in python_reloader
    reloader_thread()
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/utils/autoreload.py", line 83, in reloader_thread
    ensure_echo_on()
  File "/proj/virtualenvs/testing/lib/python2.6/site-packages/django/utils/autoreload.py", line 77, in ensure_echo_on
    attr_list = termios.tcgetattr(fd)
termios.error: (22, 'Invalid argument')
Validating models...

Запуск python manage.py runserver из командной строки работает нормально.

Находя в поисках, я обнаружил, что termios.error: (22, 'Invalid argument') ошибка в том, что python пытается читать из стандартного ввода, но не может изнутри среды Eclipse.

[Edit]: я забыл упомянуть, что я использую PyDev и последнюю версию 1.3 Django.

[Edit]: @Blake, @izhak.Я Затмение Я определил Python, включенный в мой virtualenv (/ proj / virtualenvs / testing, как вы можете видеть из вывода).Из командной строки я использую ту же версию Python, что и для активации virtualenv.

Ответы [ 6 ]

3 голосов
/ 08 апреля 2011

Кажется, что отсутствие --noreload вызывает этот эффект.Странно.

РЕДАКТИРОВАТЬ: Сначала я подумал, что это рабочий каталог проекта.

2 голосов
/ 27 марта 2012

Потратьте 3+ часа на решение этой проблемы.По сути, виновником является файл autoload.py в django 1.3.В основном, Eclipse - это не тип устройства.Решение этой проблемы состоит в том, чтобы изменить /your-path-to-django/util/autoreload.py следующим образом:

index e5a421e..1a4a1a1 100644
--- a/autoreload_bak.py
+++ b/usr/local/lib/python2.6/dist-packages/django/utils/autoreload.py
@@ -73,11 +73,12 @@ def code_changed():

 def ensure_echo_on():
     if termios:
-        fd = sys.stdin.fileno()
-        attr_list = termios.tcgetattr(fd)
-        if not attr_list[3] & termios.ECHO:
-            attr_list[3] |= termios.ECHO
-            termios.tcsetattr(fd, termios.TCSANOW, attr_list) 
+        if sys.stdin.isatty():
+            fd = sys.stdin.fileno()
+            attr_list = termios.tcgetattr(fd)
+            if not attr_list[3] & termios.ECHO:
+                attr_list[3] |= termios.ECHO
+                termios.tcsetattr(fd, termios.TCSANOW, attr_list)

 def reloader_thread():
     ensure_echo_on()

Это должно позволить вам запустить сервер запуска в Eclipse даже без опции --noreload.

Примечание: Вам все еще нужно применить этот патч, чтобы избавиться от проблемы дочернего / родительского процесса, см. Здесь: Как включить функции отладки Eclipse в веб-приложении?

1 голос
/ 08 апреля 2011

У меня была такая же ошибка , точная , когда я пытался просто запустить программу django из Eclipse. Если бы я щелкнул правой кнопкой мыши по проекту, затем выбрал Django -> Custom Command и 'runserver', он потерпел бы неудачу. Я наконец-то узнал, что, нажав на кнопку «Выполнить» на панели инструментов Eclipse, она будет работать. Хотя и там я обнаружил, что это не всегда верно. Я использую последнюю версию PyDev 2.0. Как и у вас, запуск его из командной строки вне eclipse работал каждый раз.

0 голосов
/ 07 апреля 2011

Можете ли вы проверить в Eclipse> Windows> настройки> Pydev> Python для версии Python, которую вы используете.Дайте точную версию Python, которую вы там используете.

0 голосов
/ 07 апреля 2011

Есть ли у вас более одной версии Python в вашей системе? Если версия, открытая из терминала, отличается от версии, используемой интерпретатором PyDev, это может вызвать проблемы / различия в операционной среде.

0 голосов
/ 07 апреля 2011

Вы пытались установить PyDev плагин для Eclipse? Это действительно облегчает пользователям Eclipse разработку приложений Python и особенно приложений Django. Просто создайте новый проект Django, и вы получите хорошо настроенную среду и manage.py, доступную для запуска из контекстного меню проекта.

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