On 2011-07-19 15:20:45 +0200, Andreas Röhler said:
Am 16.07.2011 16:17, schrieb Dirk:
Hallo zusammen,
Ich probiere mich gerade an Emacs + rope (aktuelle version) und arbeite an einem Projekt in dem dict-comprehensions im Einsatz sind. Mein Problem: Bei jeder dict-comprehension meldet rope es handle sich um einen Syntax-Fehler.
Werden die von rope noch nicht unterstützt, kann man das konfigurieren oder mache ich etwas falsch?
Viele Grüße, Dirk.
Falls es etwas zu lesen, gibt, will ich gern mal reinschauen.
Grüße
Andreas
Hallo,
tut mir leid das ich eine sehr wage Fehlerbeschreibung geliefert habe,
ich wusste nicht so richtig wie ich meine Frage präzisieren sollte.
ich denke das ursprüngliche Problem habe ich zufällig gelöst. Ich habe
es anscheinend geschafft mein Emacs zwei verschiedene Python Versionen
ansprechen zu lassen. Der aufgerufene Interpreter war immer ein Python
2.7.3, hinter den Kulissen arbeitete aber ein Python 2.6. Das habe ich
erst herausgefunden als ich python mal aus einer shell in Emacs
aufgerufen habe.
Ich das ist inzwischen behoben, das war ein PATH Problem.
Rope meldet nun keinen Syntaxfehler mehr in der Zeile mit der
dict-comprehension. Allerdings bricht es selbst in einer minimal Datei
wie folgt nach 5 Minuten bearbeitungszeit mit einer Exception ab
(Traceback am Schluss).
~/ropetest/minimal_example.py
a = 5
b = 7
c = a + b
Ich habe bei a den Befehl "Rename" ausgelöst. Im Minibuffer steht 5
minuten lang "Calculating rename changes..." sonst tut sich nichts. CPU
Auslastung nahe 0.
Soweit ich den Traceback unten richtig interpretiere durchsucht rope
mein komplettes Benutzerverzeichnis nach .py Dateien, denn sonst hätte
es nicht die Gentoo-prefix Installation finden können die dort liegt.
Dort meint er einen Fehler zu finden. (Sieht man sich den Dateinamen an
wird sofort klar warum python 2 dort einen Fehler meldet...)
Rope kann doch nicht ernsthaft in jeder python Datei auf dem System
nach Referenzen auf mein besagtes a suchen?
Ich benutze Emacs 23.3 mit dem Python-Erweiterungspaket von
http://gabrielelanaro.github.com/emacs-for-python/ .
Der Python betreffende Teil meiner .emacs ist ehr langweilig:
;python
(load-file "~/.emacs.d/emacs-for-python/epy-init.el")
(epy-setup-checker "pylint -f parseable %f")
(setq python-mode-hook
'(lambda ()
"Turn off Indent Tabs mode."
(set (make-local-variable 'indent-tabs-mode) nil)))
Der Traceback von der Exception:
Traceback (most recent call last):
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/decorators.py",
line 53, in newfunc
return func(*args, **kwds)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/interface.py",
line 52, in do_refactor
refactoring(self, self.env).show(initial_asking=initial_asking)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/refactor.py",
line 43, in show
changes = runtask(self.env, calculate, name=name)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/refactor.py",
line 469, in runtask
return RunTask(env, command, name, interrupts)()
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/refactor.py",
line 489, in __call__
result = self.task(handle)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/refactor.py",
line 41, in calculate
return self._calculate_changes(result, handle)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/ropemode-0.1_rc2-py2.7.egg/ropemode/refactor.py",
line 122, in _calculate_changes
return self.renamer.get_changes(task_handle=task_handle, **values)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/rename.py",
line 95, in get_changes
new_content = rename_in_module(finder, new_name, resource=file_)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/rename.py",
line 192, in rename_in_module
for occurrence in occurrences_finder.find_occurrences(resource, pymodule):
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/occurrences.py",
line 36, in find_occurrences
result = filter(occurrence)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/occurrences.py",
line 160, in __call__
if same_pyname(self.pyname, occurrence.get_pyname()):
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/utils.py",
line 10, in _wrapper
setattr(self, name, func(self, *args, **kwds))
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/occurrences.py",
line 92, in get_pyname
return self.tools.name_finder.get_pyname_at(self.offset)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/utils.py",
line 10, in _wrapper
setattr(self, name, func(self, *args, **kwds))
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/occurrences.py",
line 306, in name_finder
return evaluate.ScopeNameFinder(self.pymodule)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/utils.py",
line 10, in _wrapper
setattr(self, name, func(self, *args, **kwds))
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/refactor/occurrences.py",
line 334, in pymodule
return self.pycore.resource_to_pyobject(self.resource)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/pycore.py",
line 194, in resource_to_pyobject
return self.module_cache.get_pymodule(resource, force_errors)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/pycore.py",
line 320, in get_pymodule
force_errors=force_errors)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/pyobjectsdef.py",
line 153, in __init__
source, node = self._init_source(pycore, source, resource)
File
"/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/site-packages/rope-0.9.3-py2.7.egg/rope/base/pyobjectsdef.py",
line 182, in _init_source
raise exceptions.ModuleSyntaxError(filename, e.lineno, e.msg)
ModuleSyntaxError: Syntax error in file