Notepad++ 运行 Python 失败主因是系统 PATH 未正确配置、路径宏误用或输出缓冲,需先确保 cmd 中 python --version 可执行,再检查环境变量、NppExec 控制台驻留、-u 参数防缓冲、引号包裹路径宏及重启编辑器。

Notepad++ 本身不运行 Python,它只是调用系统命令;所有“一键运行失败”,90% 出在 PATH、路径宏误用或输出缓冲上,而不是菜单配置本身。
cmd 中 python --version 报错,Notepad++ 就一定跑不了
这是最底层的依赖问题。NppExec、Run 菜单、Python Script 插件全都要靠系统能识别 python 命令。
- 先在 CMD 或 PowerShell 里敲
python --version,如果提示“不是内部或外部命令”,说明 Windows 根本找不到 Python - 重装 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 执行后控制台一闪而过,根本看不到输出
这不是脚本没运行,而是 CMD 窗口执行完立刻退出。NppExec 默认不驻留终端,尤其对无 input() 的短脚本。
- 最直接解法:在命令末尾加
& pause,例如:python "$(FULL_CURRENT_PATH)" & pause - 更规范的做法是启用 NppExec 内置控制台:
npp_console 1 | python "$(FULL_CURRENT_PATH)" - 如果脚本含
input()却卡住,优先加-u参数:python -u "$(FULL_CURRENT_PATH)",否则输出缓冲可能让提示不显示
Run → Run 配置 F5 快捷键总提示“找不到文件”
核心陷阱在于路径宏和空格处理。$(FULL_CURRENT_PATH) 自带双引号,但如果你硬写成 python C:\my script\test.py(没引号、含空格),CMD 就会把空格当分隔符,只传 C:\my 给 Python。
立即学习“Python免费学习笔记(深入)”;
- 正确写法只有一条:
python -u "$(FULL_CURRENT_PATH)"(引号已由宏提供,-u防缓冲) - 想传命令行参数?改成:
python -u "$(FULL_CURRENT_PATH)" $(CMDLINE),运行时弹窗里填arg1 arg2即可 - 千万别用
$(FILE_NAME)或$(NAME_PART)——它们不含路径,一旦当前工作目录不是文件所在目录,import就报ModuleNotFoundError - 保存命令时一定要点
Save,名字随便起(如Python (UTF-8)),否则关掉窗口就丢了
中文输出乱码或显示 \xe4\xbd\xa0
别改文件头编码声明(# -*- coding: utf-8 -*- 没用),要切终端编码。
- 在 NppExec 指令中写:
cmd /c chcp 65001 >nul && python "$(FULL_CURRENT_PATH)"(临时切 Unicode 页) - 更稳妥组合:
cmd /c chcp 65001 >nul && python -u "$(FULL_CURRENT_PATH)" - 如果用了
input()仍卡住,说明chcp+-u还不够稳定,这时建议换用Python Script插件或直接终端运行
真正容易被忽略的是:Notepad++ 启动时读取的环境变量是静态快照,PATH 改了不重启编辑器,所有“运行”功能都还在用旧环境;另外,$(CURRENT_DIRECTORY) 和 $(FULL_CURRENT_PATH) 行为差异极小但后果严重——一个切工作目录,一个给绝对路径,混用会导致 import 失败,且错误信息完全不提示路径问题。


















