Pergunta

pylint está fazendo algo estranho na minha caixa de Windows - algo que não deve ser possível. Esta não é uma questão sobre a fixação pylint, tanto como a fixação da minha compreensão.

Eu tenho uma instalação típica da mais recente versão do pylint, Python 2.6 e Windows Vista.

Se eu abrir um Prompt, e correr pylint comando a partir da linha de comando, ele executa com sucesso, em seguida, quando se chega ao fim do programa, ele não se limita a saída para a linha de comando novamente, mas fecha o comando inteiro janela do prompt.

Eu tive uma breve olhada no código on-line (que eu suponho que é o código que é realmente sendo executado) e eles estão chamando sys.exit () com vários níveis de erro, mas a minha leitura e teste sugere que ainda deve apenas retorno à linha de comando com o conjunto de nível de erro apropriada.

pylint também é executado como parte do regime de testes do meu projeto, e ele funciona lá, sugerindo-me que se ele é chamado como um método de Python em vez da linha de comando, ele não tem o mesmo problema (provavelmente não chamar a sys.exit () neste caminho de código.)

Por qual mecanismo poderia pylint perto o "shell" que continha isso?

Se isto um bug no pylint? Não vejo como. Um bug no Python? Um bug no Windows?

Foi útil?

Solução

Eu apenas tentei isso no XP:

t.bat:

exit

A execução desse fecha a janela!

Talvez a linha de comando para pylint usa um arquivo de lote que contém uma saída?

Outras dicas

Esta é uma solução muito fácil. Vá em seus scripts python pasta e localizar pylint.bat e abri-lo no bloco de notas.

Ele irá ler o seguinte

@echo off
rem = """-*-Python-*- script
rem -------------------- DOS section --------------------
rem You could set PYTHONPATH or TK environment variables here
python -x "%~f0" %*
goto exit

"""
# -------------------- Python section --------------------
import sys
from pylint import lint
lint.Run(sys.argv[1:])


DosExitLabel = """
:exit
exit(ERRORLEVEL)
rem """

Para corrigir o problema na mão da mudança fechamento imediato lo para o seguinte

@echo off
rem = """-*-Python-*- script
rem -------------------- DOS section --------------------
rem You could set PYTHONPATH or TK environment variables here
python -x "%~f0" %*
goto exit

"""
# -------------------- Python section --------------------
import sys
from pylint import lint
lint.Run(sys.argv[1:])


DosExitLabel = """
:exit
ECHO.
rem exit(ERRORLEVEL)
rem """

Basicamente tudo o que fiz foi o comentário fora a saída (ERRORLEVEL) com "rem" palavra-chave, em seguida, antes que ele vai voltar para o prompt de eu adicionei em uma impressão linha em branco com "ECHO". de modo que a solicitação não fica distorcida com a saída.

Esta é http://www.logilab.org/ticket/19498 prevista para 0.20.0 (actualmente em desenvolvimento).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top