微软商店版Windows Python无法运行PyInstaller,无权限求解决
解决Microsoft Store版Python运行PyInstaller的WinError 1920问题
方案1:修改PyInstaller的兼容性检测代码
你的虚拟环境里的PyInstaller在检测Microsoft Store版Python时,会尝试读取重定向的python.exe文件大小(该文件是0字节的快捷方式),触发系统权限错误。可以直接绕过这个检测:
- 找到虚拟环境中的PyInstaller配置文件:
venv/lib/site-packages/PyInstaller/compat.py - 打开文件,定位到第166行左右的代码:
is_ms_app_store = is_win and os.path.getsize(python_executable) == 0 - 将其修改为:
is_ms_app_store = False - 保存文件后,重新运行
python -m PyInstaller即可。
方案2:使用无需安装的便携版Python
无需管理员权限,直接使用便携版Python创建独立环境:
- 下载对应版本的Python嵌入式压缩包(比如Python 3.7的embeddable zip包),解压到你有权限读写的目录(如个人文档文件夹)
- 打开解压后的目录,找到
python.exe,用它创建新的虚拟环境:path/to/portable/python.exe -m venv my_new_venv - 激活新虚拟环境:
my_new_venv\Scripts\activate.bat - 安装PyInstaller:
pip install pyinstaller - 用这个环境运行PyInstaller打包你的脚本即可。
方案3:直接调用真实的Python可执行文件
Microsoft Store版Python的真实可执行文件位于C:\Program Files\WindowsApps目录下,尝试直接用该路径运行PyInstaller:
"C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\python.exe" -m PyInstaller your_script.py
注意替换命令中的Python版本路径和你的脚本文件名。
内容的提问来源于stack exchange,提问作者qwerty_99
相关产品推荐
相关产品推荐

