Notepad++运行Python失败90%因系统PATH未配置:需在CMD中用where python验证路径,手动添加Python及Scripts目录至PATH,并彻底重启Notepad++;NppExec命令须用python -u "$(FULL_CURRENT_PATH)"并加引号,禁用py启动器。

确认 Python 已正确注册到系统 PATH
Notepad++ 本身不带 Python 解释器,所有“运行失败”问题里,90% 源于 Windows 找不到 python 命令。你在 CMD 中敲 python --version 报错,Notepad++ 就一定跑不了。
检查方法:打开 CMD(不是 PowerShell),输入 where python。如果返回空或路径不对,说明 PATH 没配好。
- 重装 Python 时务必勾选 Add Python to PATH(安装器最下方小复选框)
- 若已安装但漏勾,需手动把两个路径加进系统环境变量
PATH:C:\Users\XXX\AppData\Local\Programs\Python\Python311\和C:\Users\XXX\AppData\Local\Programs\Python\Python311\Scripts\ - 改完 PATH 后,必须关闭并重启 Notepad++——它启动时就缓存了环境变量,只重启 CMD 或终端没用
NppExec 命令中必须用 $(FULL_CURRENT_PATH) 且加引号
NppExec 不识别 %FULL_CURRENT_PATH% 这类旧宏,只认 $(FULL_CURRENT_PATH),而且这个宏本身已自动包裹双引号,不能手动再加、也不能去掉。
错误写法:python C:\my script\test.py(含空格无引号)、python %FULL_CURRENT_PATH%(宏无效)、python "$(FILE_NAME)"(不含路径,import 会报 ModuleNotFoundError)
立即学习“Python免费学习笔记(深入)”;
- 正确命令示例:
python -u "$(FULL_CURRENT_PATH)"(-u强制无缓冲,避免print卡住不显示) - 如需传参,写成:
python -u "$(FULL_CURRENT_PATH)" $(CMDLINE),运行时弹窗填arg1 arg2 - 保存命令时一定要点 Save,起个名字(如
Run Python (UTF-8)),否则关掉窗口就丢了
中文乱码和控制台闪退是编码与终端行为问题
Notepad++ 默认用 OEM 编码(如 GBK),而 Python 3 默认 UTF-8,print("你好") 输出 \xe4\xbd\xa0\xe5\xa5\xbd 或直接报 UnicodeEncodeError,跟文件头的 # -*- coding: utf-8 -*- 无关。
- 解决乱码:在 NppExec 命令开头加
cmd /c chcp 65001 >nul &&,完整写法:cmd /c chcp 65001 >nul && python -u "$(FULL_CURRENT_PATH)" - 控制台一闪而过:不是脚本没运行,是 CMD 执行完立刻退出。加
& pause最快验证,但更规范的是用npp_console 1 | python -u "$(FULL_CURRENT_PATH)"(启用 NppExec 内置控制台) - 如果脚本含
input()却卡住,优先确保用了-u;若仍异常,说明终端编码未同步,此时chcp 65001必须前置
别用 py 启动器替代 python,也别依赖 Run 菜单默认项
py -3 是 Windows Python Launcher,NppExec 不解析 shebang 行,也不保证调用你期望的版本,容易执行错解释器(比如你装了 3.11 和 3.12,py -3 可能固定指向旧版)。
Notepad++ 的 Run → Run(F5)菜单默认没有 Python 项,它不预置任何语言支持,所有“一键运行”都靠你手动注册一条可执行语句。
- 操作路径:按
F5→ 粘贴命令 → 点Save→ 起名 → 设快捷键(如Ctrl+F5)→ 确定 - 不要跳过
Save步骤,否则命令不会持久化,下次打开就没了 - 快捷键冲突?点
Run → Manage Shortcut Keys查看并调整,避免和已有的Ctrl+S、Ctrl+Z等覆盖
实际配置中最容易被忽略的,是 PATH 修改后忘记重启 Notepad++,以及误用 $(FILE_NAME) 导致相对导入失败——这两个点一旦出错,现象都是“脚本明明能双击运行,但在 Notepad++ 里 import 就报错”,排查时要优先盯死。


















