2011-09-18 15 views
6

Używam PyDev w Eclipse jako mój edytor Python. Jest w porządku pod względem zestawu funkcji. Wszystko działa dobrze, z wyjątkiem jednej bardzo denerwującej rzeczy:Zakończenie realizacji Eclipse PyDev (jeszcze raz)

Samo ukończenie kodu działa szybko. Kiedy naciskam Alt + Spacja, okno wyskakuje prawie natychmiast i wszystkie opcje są dostępne. Opcja na górze jest wybrana. Potem przychodzi problem. Szczegółowy opis pojawi się dopiero około 5-10 sekund. Cały czas CPU pracuje przy maksymalnym obciążeniu, a interfejs nie odpowiada. Cały procesor jest pochłaniany przez proces Java Eclipse (proces sppythona Pythona wydaje się być bezczynny). Następnie pojawia się żółte okno, a wszystko, co zawiera, jest tylko kodem Pythona wybranej funkcji/zmiennej. Wszystkie kolejne szczegóły są wyświetlane natychmiast. Procedura powtarza się po zamknięciu okna zakończenia (na przykład przez zaakceptowanie jednej z opcji i ponowne zapytanie o zakończenie). To doprowadza mnie do szału.

próbowałem dotąd:

  • tworząc zupełnie nowy obszar roboczy,
  • tworzenia projektu Eclipse/PyDev od podstaw,
  • Tweaking JVM aby upewnić się, że ma mnóstwo pamięci
  • upewniając się, że wybrano właściwą maszynę JVM (najnowsza dostępna JVM Oracle),
  • upewniając się, że proces Pythona komunikuje się swobodnie z instancją Javy (czytałem o możliwych problemach z tym, ale wydaje się, że nie jest to problem).
  • upewniając się, że wszystkie zainstalowane wtyczki są aktualne.

Używam wersji Eclipse Helios, ponieważ ostatnio sprawdziłem, czy niektóre rozszerzenia nie zostały jeszcze przeniesione do najnowszej.

Czy ktoś zaobserwował podobny problem? Czy ktokolwiek był w stanie to obejść? Ogólne pomysły dotyczące debugowania i składania sensownego raportu o błędzie? Inne rzeczy warte sprawdzenia.

Jakiekolwiek obejście mniej drastyczne niż całkowite wyłączenie ukończenia?

Dzięki!

EDIT:

Ja również zauważyłem problem z podobnym okienko w edytorze HTML/CSS. Wyglądało to nieco podobnie (żółte okno, z pewnym tekstem w środku), a wyświetlenie trwało nawet kilka wieków. Naprawdę nie wiem, czy to jest powiązane, ale może być.

EDIT (2):

Ok, nie zacząłem z nową instalację najnowszej Eclipse Indigo, bez żadnych dodatkowych wtyczek oprócz PyDev a problem pozostaje. Wygląda na to, że będę musiał szukać nowego IDE.

Odpowiedz

0

Czy jest szansa, że ​​możesz podać kod, który to robi (i dodać go do raportu o błędach, patrz: http://pydev.org/about.html w przypadku linków)?

Używam PyDev codziennie z kilkoma dużymi projektami i nie mam tego problemu, więc może to być jakiś konkretny konstrukt lub scenariusz w twoim kodzie - a może po prostu nie dałeś Eclipse wystarczającej ilości pamięci (co sprawiają, że śmieciarz działa znacznie więcej), w takim przypadku spójrz na: What are the best JVM settings for Eclipse? (w szczególności podnieś flagę -Xmx, chociaż prawdopodobnie możesz tam również użyć innych wskazówek).

Jeśli nie możesz podać odtwarzalnego scenariusza, innym wyborem będzie uzyskanie profilera (tj: profiler YourKit java ma 15 dni wolnego, co może być pomocne w tym przypadku), uruchomienie tego przypadku użycia w profilerze i przekazanie migawki z tego, co się dzieje w tej sytuacji (jeśli tak jest, proszę otworzyć raport o błędzie na pydev.org i mogę ci tam pomóc).

+0

Myślę, że rozwiązałem to częściowo, zobacz szczegóły tutaj: http://stackoverflow.com/questions/7148619/eclipse-hangs-for-3-4-seconds-before-displaying-a-tooltip-message – julkiewicz

0

Mam to z FAQ pydev.org i działa dobrze dla mnie.

Kiedy wykonuję kodowanie, PyDev zawiesza się, co mogę zrobić?

PyDev wykonuje większość swoich rzeczy po stronie java, ale niektóre informacje można uzyskać tylko od strony python (głównie wbudowane), więc aby uzyskać te informacje, PyDev tworzy powłokę i komunikuje się z nią przez gniazda .

Główne problemy, gdy tak się dzieje to:

  1. Jest zapora blokuje komunikację do powłoki

  2. w Linuksie, niektóre ziarna nie pozwalają ipv4 wykorzystania, co może powodować PyDev niepowodzeniem.

Aby go włączyć, wykonaj następujące czynności: echo 0>/proc/sys/net/IPv6/bindv6only

  1. timeout podłączenie jest zbyt smal.

To zależy od "Timeout podłączyć do shell" w preferencjach Podpowiedzi (Okno> Preferencje> PyDev> Zakończenie Code)

Jeśli nic nie działa, proszę zgłosić błąd (także sprawdzić, czy w dzienniku błędów znajduje się dowolne okno (okno> widok pokazu> Środowisko wykonawcze PDE> Dziennik błędów) i plik Zaćmienie ".log", który znajduje się w folderze .metadata w obszarze roboczym

+1

ostrożnie, to pytanie ma prawie rok. – Wug

2

Jaka wersja Javy jest używasz?

Jeśli korzystasz z systemu Windows 7, nowsze wersje Java (chyba 6+) Domyślnie będzie to IPv6. To prawdopodobnie powoduje problem, ponieważ Python może chcieć IPv4.

W każdym razie, ponieważ miałem ten problem Próbowałem wyłączenie

  • pylint
  • Code Analysis

ale nadal wisiał.

Odpowiedź Pala na temat "wykorzystania IPv4" wywołała moją pamięć o innym problemie rozwiązanym przez "preferowanie" IPv4.

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

Co chcesz zrobić, to zmienić swój eclipse.ini i dodać "-Djava.net.preferIPv4Stack = true" w sekcji vmargs

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

już nie dostać zawiesza .

+0

Tak! Tak! i znowu tak! Alternatywnie wyłączyłem IPv6 na wszystkich moich kartach sieciowych, a zawieszanie zniknęło! – tishma

+0

Chodzi o to, że od czasu do czasu używam tylko Pythona, a ja po prostu wróciłem do notatnika ++ z powodu tego problemu, nie mając czasu, aby to rozgryźć. – tishma

+0

OK. Teraz kończy się niepowodzeniem po naciśnięciu klawisza Ctrl-Space :( – tishma

Powiązane problemy