需先验证长路径支持是否启用:运行PowerShell命令检查注册表项LongPathsEnabled值是否为1,注意CurrentControlSet可能非实际生效项;再确保Python≥3.6、python.exe未启用兼容模式、组策略(专业版)中“启用 Win32 长路径”已设为已启用且重启生效;最后用Python脚本实际测试超长路径是否存在。

确认当前系统是否已启用长路径支持
别急着改注册表,先验证现状。PowerShell里运行这行命令:Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -ErrorAction SilentlyContinue。如果报错或返回值不是1,说明没开。注意:这里查的是CurrentControlSet,但实际生效的可能是ControlSet001或ControlSet002——打开注册表编辑器,先看HKEY_LOCAL_MACHINE\SYSTEM\Select\Current的数值,再跳转到对应ControlSetXXX路径下确认。
修改注册表并确保Python进程不走兼容模式
只改注册表不够,必须同步满足三个条件:注册表项为1、Python ≥ 3.6、python.exe未以兼容模式运行。
- 用管理员权限运行PowerShell,执行:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -Type DWORD - 右键
python.exe(包括IDE里调用的那个)→ 属性 → 兼容性 → 取消勾选「以兼容模式运行这个程序」 - PyCharm/VS Code等IDE也要关掉兼容模式,并在任务管理器里杀掉所有残留的
python.exe进程再重启
组策略设置(仅限Windows专业版/企业版)
组策略优先级高于注册表,若已启用会覆盖注册表设置。按Win+R输入gpedit.msc,导航至:计算机配置 → 管理模板 → 系统 → 文件系统 → 启用 Win32 长路径,设为「已启用」。改完必须重启,否则不生效。
验证Python能否真正使用长路径
光看注册表和组策略开了没用,得让Python实际跑起来试试。
立即学习“Python免费学习笔记(深入)”;
- 新建一个超长路径测试目录,比如:
C:\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\test(手动建或用脚本生成) - 在Python中运行:
from pathlib import Path; p = Path(r"C:\a\b\c\...\z\test"); print(p.exists()) - 如果返回
False但资源管理器能打开该路径,说明Python进程仍被兼容模式拦截,或PATH里混用了旧版Python(如conda环境里的3.5)
最容易被忽略的是:某些IDE(尤其是老版本PyCharm)会自带Python解释器或缓存启动参数,即使系统已启用,它仍可能用旧方式调用API。这时候得进IDE设置里检查解释器路径,或干脆用命令行直接跑python -c "from pathlib import Path; print(Path(r'your_long_path').exists())"交叉验证。


















