notepad++运行python失败主因是系统环境配置错误:path未添加python路径、终端编码不匹配或路径宏使用不当;需先确保cmd中python --version正常,再正确设置环境变量、使用$(full_current_path)宏并添加-u参数。

Notepad++ 本身不执行代码,它只调用系统命令;所有“运行失败”,90% 是环境变量、路径宏或终端编码没对,而不是 Notepad++ 设置错了。
python --version 在 CMD 报错,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)" - 若脚本含中文输出却显示乱码或
\xe4\xbd\xa0,别改文件头# -*- coding: utf-8 -*-,要切终端编码:cmd /c chcp 65001 >nul && 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 -u "$(FULL_CURRENT_PATH)"(引号已由宏提供,-u防缓冲) - 想传命令行参数?改成:
python -u "$(FULL_CURRENT_PATH)" $(CMDLINE),运行时弹窗里填arg1 arg2即可 - 千万别用
$(FILE_NAME)或$(NAME_PART)——它们不含路径,一旦当前工作目录不是文件所在目录,import就报ModuleNotFoundError - 保存命令时一定要点 Save,名字随便起(如
Python (UTF-8)),否则关掉窗口就丢了
中文路径下 Python 脚本 import 失败或编码异常
Windows 下 Notepad++ 对中文路径解析不稳定,尤其涉及子模块导入或 open() 读文件时,$(CURRENT_DIRECTORY) 可能被截断或误转义。
- 首选方案:把项目移到纯英文路径下,比如
D:\pyproj\,一劳永逸 - 临时绕过:改用
Python Script插件,它通过 Python 解释器原生处理路径,比 NppExec 更可靠 - 若坚持用 NppExec,避免在命令中拼接路径,改用
cd /d "$(CURRENT_DIRECTORY)"切换后再执行,且确保该目录下无非 ASCII 字符名的子目录 -
open("中文.txt", encoding="utf-8")报UnicodeDecodeError?不是文件问题,是 CMD 当前代码页不支持 UTF-8,必须前置chcp 65001
真正卡住人的从来不是“怎么配”,而是“为什么配了还不行”——多数时候,是 PATH 没生效、$(FULL_CURRENT_PATH) 被多层引号包裹、或者终端编码和 Python 源码声明不一致。盯住这三点,比反复重装插件有效得多。











