notepad++运行python脚本需nppexec插件,常见问题源于windows控制台编码、path路径未配置及插件执行时序;应使用绝对路径+双引号+& pause防闪退,并在nppexec中加cmd /c chcp 65001 >nul &&确保utf-8输出。

Notepad++ 本身不能直接运行 Python,必须靠 NppExec 插件驱动;但多数人卡在“能点运行却看不到输出”或“中文变乱码”,问题不在 Python 安装,而在 Windows 控制台编码、路径解析和插件执行时序这三个地方。
为什么 python "$(FULL_CURRENT_PATH)" 会闪退或没输出
Notepad++ 的“运行”菜单(F5)调用的是独立 cmd 窗口,不继承系统 PATH,也不自动保存文件。常见现象:python is not recognized、窗口一闪而过、输出面板为空。
- 必须用绝对路径,例如
C:\Python39\python.exe "$(FULL_CURRENT_PATH)",不能只写python -
"$(FULL_CURRENT_PATH)"一定要加英文双引号,否则路径含空格(如C:\My Scripts\test.py)会被截断成C:\My导致找不到文件 - 末尾加
& pause防止窗口关闭:C:\Python39\python.exe "$(FULL_CURRENT_PATH)" & pause - 这个命令要通过 设置 → 管理快捷键 → 运行 → 添加 写入
shortcuts.xml,改完菜单界面不等于生效,必须重启 Notepad++
NppExec 脚本里中文 print 乱码怎么修
不是脚本开头加 # -*- coding: utf-8 -*- 就能解决的——那是源码声明,控制台编码是另一回事。Windows 默认用 GBK,而 Python 3.7+ 在非 UTF-8 终端下会主动降级,导致 print("你好") 输出 \xe4\xbd\xa0\xe5\xa5\xbd 或直接报 UnicodeEncodeError: 'gbk' codec can't encode character。
仅使用 Python 将 Claw Code 虚拟化框架与 OpenClaw 集成,提供 184 种工具和 200 多条命令,用于安全分析和代码质量...
- 最稳方案:在 NppExec 脚本开头加
cmd /c chcp 65001 >nul &&,再接 Python 命令,例如:cmd /c chcp 65001 >nul && C:\Python39\python.exe "$(FULL_CURRENT_PATH)" - 如果脚本里用了
input(),chcp 65001后仍可能卡住输入——这时别硬扛,换用python -u "$(FULL_CURRENT_PATH)"(强制无缓冲),或直接切到终端运行 - 不推荐改 Python 源码加
sys.stdout.reconfigure(encoding='utf-8'),因为旧版 Python(
NppExec 脚本必须以 NPP_SAVE 开头
很多人写了完整脚本,但改了代码再点运行,输出还是旧结果——根本原因是没保存。NppExec 脚本不是“读取当前编辑器内容”,而是“读取磁盘上已保存的文件”。
- 所有脚本第一行必须是
NPP_SAVE,它不带参数,就是强制保存当前文档 - 顺序不能错:
NPP_SAVE必须在python或javac命令之前,否则编译/运行的仍是上一版 - 变量如
$(FULL_CURRENT_PATH)和$(CURRENT_DIRECTORY)只在 NPP_SAVE 后才反映最新状态 - 如果你用的是“运行→运行(F5)”那种方式,它不走 NppExec 引擎,也就不会触发 NPP_SAVE,此时必须手动 Ctrl+S
新版 Notepad++(7.9+)NppExec 插件加载失败
插件菜单里找不到 “NppExec”,或点了没反应——大概率是插件没正确加载,而不是脚本写错了。新版 Notepad++ 已移除内置插件管理器,NppExec 不再能通过“插件管理器”一键安装。
- 去官网下载最新
NppExec.dll(注意不是 zip 包里的子目录,是单个 dll 文件) - 放进 Notepad++ 安装目录下的
plugins文件夹(不是plugins\NppExec) - 重启 Notepad++,检查菜单栏是否出现 “插件 → NppExec”,没有就说明 dll 没放对位置或版本不兼容
- 如果用了 MinGW-w64,
g++.exe通常不在bin下而在mingw64\bin,路径写错会导致 C++ 编译失败,但错误信息可能只显示“command not found”,容易误判为 NppExec 问题
真正难调的从来不是语法,而是 NPP_SAVE 是否生效、chcp 65001 是否前置、以及 plugins 目录下那个 dll 文件到底有没有被读到——这三处出错,脚本写得再漂亮也没用。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










