我在 Notepad++ 上编写 Python 代码,经常使用 matplotlib。如果我打开了一个图并想重新运行代码,就会出现一个烦人的对话框,提示“NppExec - 警告 - 控制台进程仍在运行”。
这个问题之前已经提出过,但开发人员似乎有点固执?我只是想知道 2019 年这个问题是否得到解决,或者是否有人想出了可行的解决方法。
如果没有,是否有人推荐其他适合 python + 机器学习的文本编辑器。
答案1
看起来 NppExec 手册第 4.6.4 节中提到了类似的情况。运行 Python 和 wxPython。它提到
set local @exit_cmd_silent = exit() // allows to exit Python automatically
应该在运行 python 进程之前设置。在这种情况下,当 NppExec 的控制台关闭或即将运行新的 NppExec 脚本时,将@exit_cmd_silent
自动调用中指定的命令。在这个确切的例子中,exit()
将发送到 python 进程。同样,如果您想杀死 python 进程而不是发送exit()
给它,您可以指定:
set local @exit_cmd_silent = nppexec:TASKKILL /F /IM python.exe
您可以help @exit_cmd
在 NppExec 的控制台中输入来查看有关@exit_cmd_silent
和的帮助@exit_cmd
。
答案2
截至撰写本文时(2019 年 12 月),您询问的警告对话框仍然存在。“绕过”此警告的最简单方法是在重新运行代码之前关闭绘图(无论下面介绍的步骤如何)。
“自动化”解决方案
注意:这些步骤假设您在 Windows 上运行 Notepad++。
作为每次手动关闭绘图的替代方法,您应该能够在 NppExec 中运行例如:
TASKKILL /F /IM python.exe
CMD /C START "" /MIN python "$(FULL_CURRENT_PATH)"
你应该看看任务终止,命令和开始分别详细解释每个命令的选项,但本质上这些命令会终止任何现有python.exe
进程,然后产生另一组与 NppExec/Notepad++ 分离的进程(因此它们不需要在再次运行一组新进程之前终止)。
需要注意的是,这不会阻止任何预先存在的窗口发出警告。您仍然需要先手动关闭它们。
"$(FULL_CURRENT_PATH)"
是 Notepad++ 内置变量,需要当前文档具有现有路径(即已保存)才能正常工作。否则,您可以直接使用代码的完整路径(例如C:\path\to\code.py
)。