Eu tenho um projeto Python usando PyDev no Eclipse, e o PyDev continua gerando erros falsos no meu código. Eu tenho um módulo settings
que define um settings
objeto. Eu importo isso no módulo b
e atribuo um atributo com:
from settings import settings
settings.main = object()
Em alguns dos meus códigos - mas não em todos, declarações como:
from settings import settings
print settings.main
... gera mensagens "Variável indefinida de import: main" no painel de erros do código Eclipse, mesmo que o código seja executado sem problemas. Como posso corrigir isso?
python
code-analysis
pydev
Chris B.
fonte
fonte
Respostas:
Para o código em seu projeto, a única maneira é adicionar uma declaração dizendo que você esperava que - possivelmente protegido por um
if False
para que não seja executado (a análise de código estática vê apenas o que você vê, não as informações de tempo de execução - se você você mesmo abriu o módulo, você não teria nenhuma indicação de que o principal era esperado).Para superar isso, existem algumas opções:
Se for algum módulo externo, é possível adicioná-lo ao
forced builtins
PyDev para gerar um shell para obter informações de tempo de execução (consulte http://pydev.org/manual_101_interpreter.html para obter detalhes) - ou seja: principalmente, o PyDev irá importar o módulo em uma concha e fazer umdir(module)
edir
sobre as classes encontradas no módulo de completação presentes e análise de código make.Você pode usar Ctrl + 1 (Cmd + 1 para Mac) em uma linha com um erro e o PyDev apresentará uma opção para adicionar um comentário para ignorar esse erro.
É possível criar um
stub
módulo e adicioná-lo àspredefined
conclusões ( http://pydev.org/manual_101_interpreter.html também possui detalhes sobre isso).fonte
try: import a; except: a=mockModule
: existe alguma maneira de suprimi-las sem os comentários?Estou usando o opencv, que depende de binários, etc, então eu tenho scripts onde todas as outras linhas têm esse erro bobo. Python é uma linguagem dinâmica, portanto, essas ocasiões não devem ser consideradas erros.
Eu removi esses erros completamente indo para:
Janela -> Preferências -> PyDev -> Editor -> Análise de Código -> Indefinido -> Variável Indefinida de Importação -> Ignorar
E é isso.
Também pode ser, Janela -> Preferências -> PyDev -> Editor -> Análise de Código -> Importações -> Importação não encontrada -> Ignorar
fonte
A postagem marcada como resposta fornece uma solução alternativa, não uma solução.
Esta solução funciona para mim:
Window - Preferences - PyDev - Interpreters - Python Interpreter
Forced builtins
guiaNew...
multiprocessing
no meu caso) e clique emOK
Não apenas as mensagens de erro desaparecem, os membros do módulo também serão reconhecidos.
fonte
re
mas uma vez que não fiz mais tinta vermelha para coisas comore.M
Eu estava tendo um problema semelhante com um projeto Eclipse / PyDev. Neste projeto, o diretório raiz do código python era um subdiretório do projeto.
Quando o projeto foi depurado ou executado, tudo estava bem, pois o diretório de trabalho foi definido no local correto. No entanto, a análise de código do PyDev falhou ao encontrar importações do módulo1 ou do módulo2.
A solução foi editar as propriedades do projeto -> PyDev - PYTHONPATH e remover / MyProject da guia de pastas de origem e adicionar / MyProject / src a ele.
fonte
Isso funcionou para mim:
passo 1) Removendo o intérprete, configurando-o automaticamente novamente
Etapa 2) Janela - Preferências - PyDev - Intérpretes - Intérprete Python Vá para a guia Forças internas clique em Novo ... Digite o nome do módulo (maldições no meu caso) e clique em OK
Etapa 3) Clique com o botão direito do mouse no explorador de projetos, no módulo que estiver apresentando erros. Vá para PyDev-> Code analysis.
fonte
Eu tive o mesmo problema. Estou usando Python e Eclipse no Windows. O código estava funcionando muito bem, mas o eclipse mostra erros em todos os lugares. Depois de alterar o nome da pasta 'Lib' para 'lib' (C: \ Python27 \ lib), o problema foi resolvido. Parece que, se a capitalização das letras não coincidir com a do arquivo de configuração, isso às vezes causará problemas (mas parece que nem sempre, porque a verificação de erros ficou boa por muito tempo antes que os problemas parecessem repentinamente sem óbvio razão).
fonte
Uma aproximação do que eu estava fazendo:
Para qual pylint disse:
E: 4,15: Undefined variable 'submodule' (undefined-variable)
Resolvi isso alterando minha importação como:
Nota: Também renomei pela variável importada para ter um nome em maiúscula para refletir sua natureza constante.
fonte
É possível que você apenas precise reconfigurar seu caminho python no Eclipse. Veja minha resposta para uma pergunta semelhante.
fonte
nas preferências -> PyDev -> PyLint sob argumentos a serem passados para o PyLint, adicione esta linha:
você precisará fazer isso para cada gerado. Encontrei isso pesquisando no Google, mas perdi a referência.
fonte
Clique com o botão direito do mouse no explorador de projetos, no módulo que estiver apresentando erros. Vá para PyDev-> Remover marcadores de erro.
fonte
Minha resposta não contribui com nada de novo, apenas um exemplo concreto que encontrei.
PyDev mostrou a mensagem de erro "Variável indefinida da importação: get_default_root_window ()"
No shell python, você pode ver que este é um módulo 'interno', conforme mencionado na resposta acima:
Agora, em Janela-> Preferências-> PyDev-> Intérpretes-> Python Interpreter, selecionei a guia 'Forced Builtins' e adicionei 'gtk.gdk' à lista.
Agora a mensagem de erro não era mais exibida.
fonte
Acho que essas duas etapas funcionam para mim o tempo todo:
As coisas a serem observadas aqui:
Alguns módulos populares são instalados com algum par pai e filho com o mesmo nome. Nesses casos, você também deve adicionar esse pai ao PYTHONPATH, além da pasta dos avós, que você já confirmou / adicionou para todo o resto.
Use (por exemplo) "google.appengine.api.memcache" ao adicionar aos buildins forçados, NÃO apenas "memcache", onde "google" neste exemplo é filho imediato de uma pasta definida em PYTHONPATH.
fonte
Se você tem certeza de que seu script é executado e se trata de um alarme falso, vá para Preferências> PyDev> Editor> Análise de Código. Demoteie os erros nos avisos.
http://www.pydev.org/manual_adv_code_analysis.html
fonte