PyInstaller编译Python脚本为EXE时出现LoadLibraryEx(1920)文件访问错误
解决PyInstaller报错win32ctypes.pywin32.pywintypes.error: (1920, 'LoadLibraryExW', '系统无法访问文件')
嘿,我之前也踩过几乎一模一样的坑!看你的错误日志里的路径(PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0、WindowsApps),你用的是Microsoft Store版本的Python,这就是问题的根源——Microsoft Store的应用目录受Windows系统严格的权限保护,哪怕你手动添加权限、取消文件夹隐藏,PyInstaller也没法正常访问里面的文件。
给你几个实测有效的解决办法,按优先级排序:
1. 最彻底:卸载Microsoft Store版Python,安装官方离线版
这是我最终解决问题的方案,一劳永逸:
- 打开Windows设置 → 应用 → 找到「Python 3.7」(来自Microsoft Store的那个),卸载它
- 去Python官网下载对应版本的离线安装包(别选Microsoft Store的选项)
- 安装时一定要勾选「Add Python to PATH」,然后选自定义安装路径(比如
C:\Python37),避开系统权限限制的目录 - 重新安装PyInstaller:
pip install pyinstaller - 再运行打包命令,应该就能正常工作了
2. 临时 workaround:指定PyInstaller的工作目录
如果暂时不想重装Python,可以试试把PyInstaller的临时文件和输出文件放到你完全有权限的目录:
运行PyInstaller时加上这两个参数:
pyinstaller --workpath C:\Users\Jonathan\Temp\pyinstaller_work --distpath C:\Users\Jonathan\Temp\pyinstaller_dist gui.py
不过这个方法不一定能彻底解决,因为核心的权限限制还是来自Microsoft Store的Python安装目录,大概率只能临时救急。
3. 修复依赖:重装win32ctypes相关包
有时候依赖包损坏也会触发这个错误,你可以试试重装相关组件:
pip uninstall win32ctypes pywin32 -y pip install win32ctypes pywin32
最后补充一句:你之前尝试的取消WindowsApps隐藏、添加权限的方法没用很正常,因为Microsoft Store的应用目录是Windows的受保护目录,普通用户的权限修改根本绕不开系统的底层限制,换个Python安装版本才是正道。
内容的提问来源于stack exchange,提问作者Kingwood
相关产品推荐
相关产品推荐

