2008-10-13 4 views

Antwort

2

Ich bekomme Komplettierung für meine eigenen Module in meinem PYTHONPATH oder Site-Pakete. Ich bin mir nicht sicher, welche Version des pythoncomplete.vim-Skripts Sie verwenden, aber Sie möchten vielleicht sicherstellen, dass es das Neueste ist.

EDIT: Hier einige Beispiele von dem, was ich auf meinem System zu sehen bin ...

Diese Datei (mymodule.py), I Puth in einem Verzeichnis in PYTHONPATH und dann in Website-Paketen. Beide Male konnte ich den Screenshot unten sehen.

myvar = 'test' 

def myfunction(foo='test'): 
    pass 

class MyClass(object): 
    pass 

screenshot http://i437.photobucket.com/albums/qq96/jmcantrell/screenshot.png

+0

Ich habe gerade die neueste Version heruntergeladen - kein Glück! Wie ermöglichen Sie es? Verwenden Sie auch CTAGs? – andrew

+0

Wie testen Sie es? Versuchen Sie einfach etwas wie "import sys" und dann tun "sys. " –

+0

Wie ich schon sagte, System-Module omnicomplete einfach in Ordnung. Es sind die Module in meinen Site-Paketen, für die ich keine Fertigstellung bekomme. – andrew

2

Gerade lief über dieses auf Python Reddit heute Abend: PySmell. Sieht aus, wonach du suchst.

PySmell ist ein Python-IDE-Komplettierungshelfer.

Es versucht, Python-Quellcode statisch zu analysieren, ohne es auszuführen, und generiert Informationen über eine Projektstruktur, die IDE-Tools verwenden können.

0

Ich denke, Sie nach dem pydiction Skript. Sie können Ihre eigenen Sachen und Site-Pakete zu omni complete hinzufügen.

Während Ihr es, die folgenden auf Ihre python.vim Datei hinzufügen ...

set iskeyword+=. 

Dies wird Ihnen Auto-Komplettpaket Funktionen lassen z.B. wenn Sie eingeben ...

os.path. 

und dann [CTRL] [N], finden Sie eine Liste der Funktionen für os.path bekommen.

3

Sobald ich ctags für eine meiner Website-Pakete erzeugt, begann es für das Paket arbeiten - so dass ich vermute, die omnicomplete Funktion auf ctags für Nicht-sys Module abhängt.

EDIT: Nicht wahr überhaupt.

Hier ist das Problem - schlechte Tests meinerseits - omnicomplete WAS arbeitet für Teile meines Projekts, nur nicht das meiste davon.

Das Problem war, dass ich an einem Django-Projekt arbeite, und um django.db zu importieren, muss eine Umgebungsvariable gesetzt sein. Da ich django.db nicht importieren konnte, würde jede Klasse, die von django.db geerbt wurde, oder jedes Modul, das eine Klasse importierte, die von django.db geerbt hatte, nicht abgeschlossen werden.

+0

Ich hatte das gleiche Problem außer mit app engine Bibliotheken, nicht django ... Danke, dass du mir geholfen hast, es herauszufinden – gravitation

+1

Hatte dieses Problem ein paar Mal jetzt, das erste, was ich immer versuche, das Modul in den Vanilla-Interpreter zu importieren , das scheint immer zu zeigen, wo der Fehler ist. Wenn Sie Django oder App-Engine oft verwenden, importieren sie in einer anderen Reihenfolge als der Interpreter, was zu Problemen führen kann. – gravitation

2

Tipp zur Fehlerbehebung: Vergewissern Sie sich, dass das Modul, von dem Sie versuchen, es zu omni-complete zu machen, von VIM importiert werden kann.Ich hatte einig syntaktisch korrekten Python, dass VIM nicht gefallen hat:

:python import {module-name} 
Traceback (most recent call last): 
    File "<string>", line 1, in ? 
    File "modulename/__init__.py", line 9 
    class empty_paranthesis(): 
          ^
SyntaxError: invalid syntax 

Case-in-Punkt, die Klammer aus meiner Klassendefinition zu entfernen erlaubt VIM das Modul zu importieren und anschließend OmniComplete an diesem Modul begann zu arbeiten.

Verwandte Themen