Wydaje się (w moim komputerze, YMMV) być acknowledged bug gdzie PyDev nie jest aktualizowana, aby dopasować zmianę API z ipython wersji 4 do wersji 5.
Albo zrobić
pip uninstall ipython
pip install ipython==4.2.0
(wskazano w this answer) LUB zastosować następującą łatę do pydev_ipython_console_011.py
.
163c163
< self.has_readline)
---
> )
171d170
< use_readline=self.has_readline,
183d181
< use_readline=self.has_readline,
194d191
< use_readline=self.has_readline,
239,245d235
<
< # Only configure readline if we truly are using readline. IPython can
< # do tab-completion over the network, in GUIs, etc, where readline
< # itself may be absent
< if self.has_readline:
< self.set_readline_completer()
<
Odinstalowanie traitlets pozwoliło mi otworzyć konsolę PyDev w Eclipse, ale złamał ipython w linii poleceń, więc ponownie zainstalować go. Jednak, ponieważ komunikat o błędzie wspomniał, że jakiś proces ginął z kodem wyjścia 1, doszedłem do wniosku, że może być przytłumiony punkt zwrotny, który warto zobaczyć. Więc wpadłem wspomnianą linię poleceń
/usr/bin/python2.7 -u /home/tsbertalan/eclipse/cpp-mars/eclipse/../../../.p2/pool/plugins/org.python.pydev_4.5.4.201601292234/pysrc/pydevconsole.py 34462 35898 34462 35898
(co oczywiście zależy od mojego konkretnej instalacji) i dostał traceback kończącą się
File "/home/tsbertalan/.p2/pool/plugins/org.python.pydev_4.5.4.201601292234/pysrc/_pydev_bundle/pydev_ipython_console_011.py", line 194, in _new_completer_200
use_readline=self.has_readline,
AttributeError: 'PyDevTerminalInteractiveShell' object has no attribute 'has_readline'
Kiedy google ostatnią linię, zaprowadzono mnie do this answer , gdzie jest to spowodowane zmienionym API w ipython v5. Jest to błąd w pydev. Następnie sprawdziłem ich narzędzie do śledzenia problemów i stwierdziłem, że jest to already handled, a obejściem problemu było usunięcie obrażających starych szczegółów API (patrz łata powyżej).
Niestety, metoda łatki działa tylko dla pydev 4.5.4. Kiedy uaktualniłem funkcję "sprawdzania aktualizacji" Eclipse (mając nadzieję, że 5.1.3 będzie dostępne - tylko 5.1.2), łatka rozwiązała natychmiastową porażkę w tym, że konsola interaktywna rozpoczęła, z ipython, ale używając object?
do print docstrings zamiast tego drukuje jakiś słownikopodobny obiekt. Tak, używam teraz pydev 5.1.2 z ipython 4.2.0. Może gdy dostanę 5.1.3, spróbuję zaktualizować ipython.
to też działa dla mnie! Ale dlaczego? potrzebujemy traitlets? – moldovean
Podejrzewam, że samodzielny IPython tego potrzebuje. –