pylint如何退出其运行的Windows命令框?

0 投票
3 回答
705 浏览
提问于 2025-04-15 15:55

Pylint在我的Windows电脑上出现了一些奇怪的情况——这种情况本来是不应该发生的。这不是一个关于如何修复pylint的问题,而是想弄清楚我自己的理解。

我安装的是最新版本的pylint,使用的是Python 2.6和Windows Vista。

当我打开命令提示符,直接在命令行运行pylint时,它能够成功执行。但当程序运行到最后,它不是简单地返回到命令行,而是直接关闭了整个命令提示符窗口。

我在网上简单看了一下代码(我假设这就是实际运行的代码),发现它们调用了sys.exit(),并传入了不同的错误级别。但根据我的理解和测试,这应该只是返回到命令行,并设置相应的错误级别。

Pylint还作为我项目测试的一部分运行,在那里它工作正常,这让我觉得如果通过Python方法调用它,而不是通过命令行,它就不会出现这个问题(可能在这个代码路径中没有调用sys.exit())。

那么,pylint是通过什么机制关闭了它所在的“命令行窗口”呢?

这是pylint的一个bug吗?我看不出有什么理由。是Python的bug?还是Windows的bug?

3 个回答

1

这是一个链接,指向一个网站,内容是关于一个计划在0.20.0版本中实现的功能(这个版本目前正在开发中)。你可以点击这里查看详细信息。

1

这个问题很简单就能解决。你只需要找到你的 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 """

其实我做的就是把 exit(ERRORLEVEL) 这一行用 "rem" 这个关键词注释掉,然后在它返回提示符之前,我加了一行空的打印命令 "ECHO.",这样提示符就不会和输出内容混在一起了。

2

我刚在XP系统上试了这个:

t.bat文件内容:

exit

运行这个文件会关闭窗口!

也许pylint的命令行是用一个包含exit的批处理文件?

撰写回答