notepad++运行python时工作目录错乱,因cmd默认以notepad++安装目录为工作路径;须用cd /d "$(current_directory)"显式切换,且顺序必须先切目录再执行python,并注意conda激活需call conda.bat activate或直调虚拟环境python.exe路径。

Notepad++ 运行 Python 文件时工作目录错乱
默认用 cmd /k python "$(FULL_CURRENT_PATH)" 运行,脚本里调用 os.getcwd() 会返回 Notepad++ 安装目录(比如 C:\Program Files (x86)\Notepad++),而不是你当前文件所在目录。这意味着 open("out.txt", "w")、os.mkdir("data") 等操作全写到 Notepad++ 目录下,不是你预期的位置。
根本原因是:cmd 启动时默认工作目录是 Notepad++ 自身路径,没主动切换。
- 必须显式用
cd /d "$(CURRENT_DIRECTORY)"切换工作目录 -
$(CURRENT_DIRECTORY)是 Notepad++ 内置宏,表示当前文件所在文件夹的绝对路径 - 不能只用
cd "$(CURRENT_DIRECTORY)"—— 缺少/d参数时,跨盘符(如从 C: 切到 D:)会失败 - 顺序不能颠倒:先
cd,再python,否则切换无效
激活 conda 虚拟环境必须用 call conda.bat activate
直接写 conda activate myenv 在 Notepad++ 的 cmd 中会报错:'conda' 不是内部或外部命令 或 CommandNotFoundError: Your shell has not been properly configured。这是因为 Notepad++ 启动的是干净的 cmd 实例,没加载 conda 初始化脚本。
正确做法是绕过 shell 配置,直调 conda 的批处理入口:
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
- 用
call conda.bat activate myenv(注意是conda.bat,不是conda) - 路径需确保
conda.bat在系统 PATH 中;若不在,得写全路径,比如D:\Anaconda3\Scripts\conda.bat - 如果 conda 初始化没做过(
conda init cmd.exe),call conda.bat是唯一可靠方式 - 激活后必须跟
&连接后续命令,不能换行或用&&—— 后者在激活失败时会跳过执行
运行命令里 python 应该指向虚拟环境内的解释器
即使激活了 conda 环境,python 命令仍可能调用 base 环境或系统 Python —— 因为 cmd 不继承父 shell 的 PATH 修改,激活只是临时修改当前会话变量,但 Notepad++ 的 cmd /k 没做变量持久化。
最稳的方式是绕过 PATH,直接调用虚拟环境里的 python.exe:
- 路径形如:
D:\Anaconda3\envs\tensorflow\python.exe - 可以用
conda info --envs查看真实路径,注意结尾是\python.exe,不是\Scripts\python.exe(后者是软链接,在某些旧版 Windows 上不可靠) - 如果路径含空格(如
Program Files),必须用英文双引号包裹整个路径:"D:\Program Files\Anaconda3\envs\myenv\python.exe" - 此时可省略
call conda.bat activate—— 直接执行解释器更轻量,且包路径已硬编码进 exe
快捷键冲突和 PAUSE/EXIT 组合容易卡住
配置好命令后按快捷键,窗口一闪就消失,或者卡在 “请按任意键继续…” 不退出,常见于 PAUSE & EXIT 的组合使用不当。
-
PAUSE会阻塞等待按键,EXIT在它之后才执行;但如果脚本本身有input()或异常退出,PAUSE可能被跳过或重复触发 - 建议用
& ECHO.& PAUSE开头加个空行,避免输出粘连 - 快捷键冲突常发生在 Ctrl+R、Ctrl+F5 等常用组合上;去
运行 → 管理快捷键里搜已占用项,删掉或改用 Alt+Shift+P 类冷门组合 - 测试阶段先去掉
& EXIT,手动关窗观察输出;确认无误后再加,否则异常时看不到报错信息
py39 为例):
cmd /k cd /d "$(CURRENT_DIRECTORY)" & "D:\Anaconda3\envs\py39\python.exe" "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE注意:这里没加
EXIT,方便调试;正式使用时末尾补上 & EXIT 即可。
虚拟环境路径、conda.bat 位置、当前目录宏这些细节,稍不一致就会静默失败——不是报错,而是用错解释器或写错位置,结果还“看似正常”。动手前先在 cmd 里手动敲一遍等效命令,确认能跑通,再挪到 Notepad++。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










