Завершение Eclipse PyDev зависает (еще раз) - PullRequest
7 голосов
/ 18 сентября 2011

Я использую PyDev в Eclipse в качестве редактора Python. Это хорошо с точки зрения набора функций. Все работает хорошо, за исключением одной очень раздражающей вещи:

Само завершение кода работает быстро. Когда я нажимаю Alt + Space, окно появляется почти мгновенно, и все опции есть. Опция вверху выбрана. Затем наступает беда . Подробное описание не появится примерно через 5-10 секунд. Все это время процессор работает при максимальной нагрузке, а интерфейс не отвечает. Весь процессор используется Java-процессом Eclipse (порожденный процесс Python кажется бездействующим). Затем появляется желтое окно, и все, что оно содержит, это просто код Python выбранной функции / переменной. Все последовательные детали отображаются мгновенно. Процедура повторяется, когда я закрываю окно завершения (например, принимая один из вариантов и снова запрашивая завершение). Это сводит меня с ума.

Я уже пробовал:

  • создание совершенно нового рабочего пространства,
  • создание проекта Eclipse / PyDev с нуля,
  • настройка JVM, чтобы убедиться, что он загружен,
  • убедившись, что выбрана правильная JVM (последняя доступная Oracle JVM),
  • убедившись, что процесс Python свободно взаимодействует с экземпляром Java (я читал о возможных проблемах с этим, но, похоже, это не проблема).
  • убедитесь, что все установленные плагины обновлены.

Версия, которую я использую, - Eclipse Helios, потому что в прошлый раз, когда я проверял определенные расширения, еще не была портирована на последнюю.

Кто-нибудь наблюдал подобную проблему? Кто-нибудь смог обойти это? Общие идеи о том, как его отладить и подать разумный отчет об ошибке, возможно? Другие вещи стоит проверить.

Есть ли обходной путь, менее радикальный, чем полное отключение завершения?

Спасибо!

EDIT:

Я также заметил проблему с аналогичным всплывающим окном в редакторе HTML / CSS. Это выглядело несколько похожим (желтое окно, с небольшим количеством текста внутри), и также потребовалось много времени для отображения. Не знаю, связано ли это, но может быть.

EDIT (2):

Хорошо, нет. Я начал с новой установки новейшего Eclipse Indigo, без каких-либо дополнительных плагинов, кроме PyDev, и проблема остается. Похоже, мне придется искать новую IDE.

Ответы [ 3 ]

2 голосов
/ 08 января 2013

Какую версию Java вы используете?

Если вы работаете в Windows 7, более поздние версии Java (я думаю 6+) по умолчанию будут использовать IPv6. Это, вероятно, вызывает проблему, поскольку Python, возможно, хочет IPv4.

Во всяком случае, поскольку у меня была эта проблема, я попытался отключить

  • PyLint
  • Анализ кода

но он все еще висел.

Ответ Пала о «использовании ipv4» вызвал у меня память о другой проблеме, которую я решил, «отдав предпочтение» IPv4.

См. http://docs.oracle.com/javase/1.4.2/docs/guide/net/ipv6_guide/

Вам нужно отредактировать файл eclipse.ini и добавить «-Djava.net.preferIPv4Stack = true» в раздел vmargs

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
...
-vmargs
-...
-Djava.net.preferIPv4Stack=true
...

Я больше не зависаю.

0 голосов
/ 30 июля 2012

Я получил это из часто задаваемых вопросов pydev.org, и он прекрасно работает для меня.

Когда я выполняю завершение кода, PyDev зависает, что я могу сделать?

PyDev делает большую часть своей работы на стороне java, но некоторую информацию можно получить только со стороны python (в основном, встроенных), поэтому для получения этой информации PyDev создает оболочку и связывается с ней через сокеты.

Основные проблемы, когда это происходит:

  1. Брандмауэр блокирует связь с оболочкой

  2. В Linux некоторые ядра не допускают использование ipv4, что может привести к сбою PyDev.

Чтобы включить его, выполните: echo 0> / proc / sys / net / ipv6 / bindv6only

  1. Тайм-аут для подключения слишком мал.

Зависит от "Таймаута подключения к оболочке" в настройках автозавершения кода (окно> Настройки> PyDev> Автозавершение кода)

Если ничего не работает, сообщите об ошибке (также проверьте, есть ли что-нибудь в журнале ошибок (окно> представление представления> Время выполнения PDE> Журнал ошибок) и в затмении '.log', расположенном в. папка метаданных расположения рабочей области.

0 голосов
/ 19 сентября 2011

Есть ли вероятность, что вы можете предоставить код, который это делает (и добавить его в отчет об ошибке, см. http://pydev.org/about.html для ссылок)?

Я использую PyDev ежедневно с некоторыми очень большими проектами, и у меня нет такой проблемы, поэтому это может быть какая-то конкретная конструкция или сценарий в вашем коде - или, возможно, вы просто не дали Eclipse достаточно памяти (что сборщик мусора работает гораздо больше), в этом случае взгляните на: Каковы лучшие настройки JVM для Eclipse? (в частности, поднимите флаг -Xmx, хотя вы, вероятно, можете использовать другие советы там тоже).

Если вы не можете предоставить воспроизводимый сценарий, другим вариантом будет получение профилировщика (т. Е. У jak-профилировщика YourKit есть 15 свободных дней, что могло бы помочь в этом случае), запуск этого сценария использования в профилировщике и передача снимок того, что происходит в этой ситуации (если это так, откройте отчет об ошибке на pydev.org, и я могу вам помочь).

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