Как pylint выходит из командного окна Windows, в котором он работает?

StackOverflow https://stackoverflow.com/questions/1719898

Вопрос

Pylint делает что-то странное в моем компьютере с Windows — что-то невозможное.Речь идет не об исправлении пилинта, а об исправлении моего понимания.

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

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

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

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

Каким механизмом пилинт мог закрыть содержащую его «оболочку»?

Если это ошибка в Pylint?Я не понимаю, как это сделать.Ошибка в Python?Ошибка в Windows?

Это было полезно?

Решение

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

т.бат:

exit

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

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

Другие советы

Это очень легко исправить.Перейдите в папку сценариев 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". так что подсказка не перекосится с выводом.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top