Tengo un proyecto de Python usando PyDev en Eclipse, y PyDev sigue generando errores falsos para mi código. Tengo un módulo settings
que define un settings
objeto. Importo eso en el módulo b
y asigno un atributo con:
from settings import settings
settings.main = object()
En algunos de mis códigos, pero no en todos, declaraciones como:
from settings import settings
print settings.main
... genera mensajes "Variable indefinida de import: main" en el panel de error de código de Eclipse, aunque el código se ejecute sin problemas. ¿Cómo puedo corregir esto?
python
code-analysis
pydev
Chris B.
fuente
fuente
Respuestas:
Para el código en su proyecto, la única forma es agregar una declaración que diga que esperaba eso, posiblemente protegido por una
if False
para que no se ejecute (el análisis de código estático solo ve lo que ve, no la información de tiempo de ejecución) si abrió ese módulo usted mismo, no tendría indicación de que se esperaba main).Para superar esto, hay algunas opciones:
Si se trata de un módulo externo, es posible agregarlo
forced builtins
para que PyDev genere un shell para obtener información de tiempo de ejecución (consulte http://pydev.org/manual_101_interpreter.html para obtener más detalles), es decir, principalmente, PyDev lo hará importe el módulo en un shell y realice undir(module)
ydir
en las clases que se encuentran en el módulo para presentar las terminaciones y realizar el análisis de código.Puede usar Ctrl + 1 (Cmd + 1 para Mac) en una línea con un error y PyDev le presentará una opción para agregar un comentario para ignorar ese error.
Es posible crear un
stub
módulo y agregarlo a laspredefined
terminaciones ( http://pydev.org/manual_101_interpreter.html también tiene detalles sobre eso).fuente
try: import a; except: a=mockModule
hay alguna forma de suprimirlas sin los comentarios?Estoy usando opencv que se basa en binarios, etc., así que tengo scripts donde cada otra línea tiene este error tonto. Python es un lenguaje dinámico, por lo que tales ocasiones no deben considerarse errores.
Eliminé estos errores por completo yendo a:
Ventana -> Preferencias -> PyDev -> Editor -> Análisis de código -> Indefinido -> Variable indefinida de importación -> Ignorar
Y eso es eso.
También puede ser, Ventana -> Preferencias -> PyDev -> Editor -> Análisis de código -> Importaciones -> Importación no encontrada -> Ignorar
fuente
La publicación marcada como respuesta ofrece una solución, no una solución.
Esta solución me funciona:
Window - Preferences - PyDev - Interpreters - Python Interpreter
Forced builtins
pestañaNew...
multiprocessing
en mi caso) y haga clicOK
No solo desaparecerán los mensajes de error, los miembros del módulo también serán reconocidos.
fuente
re
pero una vez que no hice más tinta roja para cosas comore.M
Estaba teniendo un problema similar con un proyecto Eclipse / PyDev. En este proyecto, el directorio raíz del código de Python era un subdirectorio del proyecto.
Cuando el proyecto se depuró o ejecutó, todo estaba bien, ya que el directorio de trabajo estaba en el lugar correcto. Sin embargo, el análisis del código PyDev no pudo encontrar ninguna importación desde el módulo1 o el módulo2.
La solución fue editar las propiedades del proyecto -> PyDev - sección PYTHONPATH y eliminar / MyProject de la pestaña de carpetas de origen y agregar / MyProject / src en su lugar.
fuente
Esto funcionó para mí:
paso 1) Eliminando el intérprete, configurándolo automáticamente nuevamente
paso 2) Ventana - Preferencias - PyDev - Intérpretes - Intérprete de Python Vaya a la pestaña Construidos forzados Haga clic en Nuevo ... Escriba el nombre del módulo (maldiciones en mi caso) y haga clic en Aceptar
paso 3) Haz clic derecho en el explorador de proyectos en cualquier módulo que esté dando errores. Vaya a PyDev-> Análisis de código.
fuente
Yo tuve el mismo problema. Estoy usando Python y Eclipse en Windows. El código funcionaba bien, pero eclipse muestra errores en todas partes. Después de cambiar el nombre de la carpeta 'Lib' a 'lib' (C: \ Python27 \ lib), el problema se resolvió. Parece que si el uso de mayúsculas en las letras no coincide con el del archivo de configuración, esto a veces causará problemas (pero parece que no siempre es así, porque la comprobación de errores estuvo bien durante mucho tiempo antes de que los problemas aparecieran repentinamente para nada obvio). razón).
fuente
Una aproximación de lo que estaba haciendo:
A lo que pylint dijo:
E: 4,15: Undefined variable 'submodule' (undefined-variable)
Resolví esto cambiando mi importación como:
Nota: También cambié el nombre por variable importada para tener un nombre en mayúscula para reflejar su naturaleza constante.
fuente
Es posible que solo necesite reconfigurar su ruta de Python dentro de Eclipse. Vea mi respuesta a una pregunta similar.
fuente
en preferencias -> PyDev -> PyLint bajo argumentos para pasar a PyLint agregue esta línea:
necesitará hacer esto para cada generado. Encontré esto buscando en Google, pero perdí la referencia.
fuente
Haga clic derecho en el explorador de proyectos en cualquier módulo que esté dando errores. Vaya a PyDev-> Eliminar marcadores de error.
fuente
Mi respuesta no aporta nada nuevo, solo un ejemplo concreto que encontré.
PyDev mostró el mensaje de error "Variable indefinida de la importación: get_default_root_window ()"
En el shell de Python puede ver que este es un módulo 'incorporado' como se menciona en una respuesta anterior:
Ahora en Ventana-> Preferencias-> PyDev-> Intérpretes-> Intérprete de Python, seleccioné la pestaña 'Forzado Builtins' y agregué 'gtk.gdk' a la lista.
Ahora el mensaje de error ya no se mostraba.
fuente
Encuentro que estos 2 pasos funcionan para mí todo el tiempo:
Las cosas a tener en cuenta aquí:
Algunos módulos populares se instalan con algunos pares padre e hijo que tienen el mismo nombre. En estos casos, también debe agregar ese padre a PYTHONPATH, además de su carpeta de abuelos, que ya confirmó / agregó para todo lo demás.
Use (por ejemplo) "google.appengine.api.memcache" cuando agregue a los builtins forzados, NO solo "memcache", donde "google" en este ejemplo, es un hijo inmediato de una carpeta definida en PYTHONPATH.
fuente
Si está seguro de que su script se ejecuta y que es una falsa alarma, vaya a Preferencias> PyDev> Editor> Análisis de código. Degradar los errores a advertencias.
http://www.pydev.org/manual_adv_code_analysis.html
fuente