Как pylint закрывает окно командной строки Windows, в котором работает? - PullRequest
0 голосов
/ 12 ноября 2009

Pylint делает что-то странное на моей Windows-коробке - что-то, что не должно быть возможным. Это не вопрос исправления Пилинта, а скорее исправление моего понимания.

У меня типичная установка последней версии pylint, Python 2.6 и Windows Vista.

Если я открываю командную строку и запускаю pylint из командной строки, она выполняется успешно, а затем, когда она достигает конца программы, она не просто снова выходит в командную строку, но и закрывает всю команду Запрос окна.

Я кратко посмотрел на код в сети (который, как я полагаю, на самом деле выполняется), и они вызывают sys.exit () с различными уровнями ошибок, но мое чтение и тестирование показывают, что все равно должно просто вернуться в командную строку с соответствующим установленным уровнем ошибки.

Pylint также запускается как часть режима тестирования моего проекта, и он работает там, предлагая мне, что если он вызывается как метод Python, а не из командной строки, у него нет такой же проблемы (вероятно, нет вызовите sys.exit () по этому пути кода.)

Каким механизмом Пилинт мог закрыть «оболочку», в которой она находилась?

Если это ошибка в Pylint? Я не вижу как. Ошибка в Python? Ошибка в Windows?

Ответы [ 3 ]

2 голосов
/ 12 ноября 2009

Я только что попробовал это на XP:

t.bat:

exit

Запуск этого закроет окно!

Может быть, командная строка для pylint использует командный файл, который содержит выход?

1 голос
/ 25 февраля 2010

Это http://www.logilab.org/ticket/19498 запланировано на 0,20,0 (в настоящее время в разработке).

1 голос
/ 22 ноября 2009

Это очень легко исправить. Перейдите в папку скриптов Python, найдите файл pylint.bat и откройте его в блокноте.

Будет читать следующее

@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 """

Чтобы устранить проблему, возникающую при закрытии подсказки, измените ее на следующую

@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 """

По сути, все, что я сделал, это закомментировал выход (ERRORLEVEL) с ключевым словом «rem», а затем вернулся к приглашению, которое я добавил пустой строкой с надписью «ECHO». чтобы приглашение не перекосилось с выводом.

...