2008-10-13 13 views

Respuesta

2

Completo mis propios módulos en mi PYTHONPATH o site-packages. No estoy seguro de qué versión del script pythoncomplete.vim está utilizando, pero es posible que desee asegurarse de que sea la última.

EDIT: He aquí algunos ejemplos de lo que estoy viendo en mi sistema ...

Este archivo (mymodule.py), que puth en un directorio en PYTHONPATH, y luego en site-packages. Ambas veces pude obtener la captura de pantalla a continuación.

myvar = 'test' 

def myfunction(foo='test'): 
    pass 

class MyClass(object): 
    pass 

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

+0

Acabo de descargar la versión más reciente - ¡sin suerte! ¿Cómo lo estás habilitando? ¿Estás usando CTAGs también? – andrew

+0

¿cómo lo estás probando? intente simplemente poner algo así como "import sys" y luego haga "sys. " –

+0

Como dije antes, los módulos del sistema omnicompletan muy bien. Son los módulos en mi sitio-paquetes para los que no estoy completando. – andrew

2

Acabo de encontrar esto en Python reddit esta noche: PySmell. Parece lo que estás buscando.

PySmell es un complemento de IDE de Python.

Trata de analizar estáticamente el código fuente de Python, sin ejecutarlo, y genera información sobre la estructura de un proyecto que las herramientas IDE pueden usar.

0

Creo que su después del script pydiction. Te permite agregar tus propias cosas y paquetes de sitios para completar todo.

Mientras estás en ello, añada lo siguiente a su archivo python.vim ...

set iskeyword+=. 

Esto le permitirá funciones del paquete de auto-completado por ejemplo, si ingresa ...

os.path. 

y luego [CTRL] [N], obtendrá una lista de las funciones de os.path.

3

Una vez me genera ctags para uno de mis site-packages, que comenzó a trabajar para ese paquete - así que supongo que la función depende de omnicomplete ctags para módulos no sys.

EDITAR: No es cierto en absoluto.

Aquí está el problema - las malas pruebas de mi parte - omnicompleto estaba trabajando para partes de mi proyecto, pero no la mayor parte.

El problema es que estoy trabajando en un proyecto django, y para importar django.db, necesita tener una variable de entorno establecida. Como no podía importar django.db, cualquier clase heredada de django.db, o cualquier módulo que importara una clase heredada de django.db, no se completaría.

+0

Tuve el mismo problema, excepto con las bibliotecas de motores de aplicaciones, no django ... gracias por ayudarme a resolverlo – gravitation

+1

Tuve este problema unas cuantas veces más, lo primero que siempre hago es tratar de importar el módulo en el intérprete de vanilla , eso siempre parece mostrar dónde está el error. Si usa django o el motor de la aplicación o lo hace muchas veces, importa en un orden diferente al del intérprete, lo que puede causar problemas. – gravitation

2

Sugerencia para solucionar problemas: verifique que el módulo que está tratando de omni-completar puede ser importado por VIM.Tenía un poco de Python sintácticamente correcto que VIM no le gustaba:

: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-en-punto, la eliminación del paréntesis de mi definición de la clase permitió VIM para importar el módulo, y posteriormente OmniComplete en ese módulo empecé a trabajar.

Cuestiones relacionadas