CMake构建过程中安装Python至用户目录失败问题排查
问题分析与解决方案
核心问题定位
日志里的0x80070002错误是文件未找到,从报错上下文看,安装程序尝试调用py.exe执行C:\Users\kalen\Documents\PythonTest\Lib\compileall.py时找不到该文件,结合你的命令和日志,存在两个明显问题:
- 参数混淆:你用了MSI安装包的
TargetDir参数,但Python 3.10的EXE安装包需要用InstallDir指定自定义路径 - 路径不一致:命令里写的是
C:\Users\MyUser\...,但日志里实际是C:\Users\kalen\...,路径中的用户名不匹配
具体修复步骤
- 修正安装参数:把
TargetDir替换为InstallDir,同时统一路径中的用户名,示例命令:.\python-3.10.7-amd64.exe /quiet /log "C:\Users\kalen\Documents\python_install.log" InstallDir="C:\Users\kalen\Documents\PythonTest" - 以管理员身份执行:无论是运行CMake还是直接执行安装命令,都要右键选择「以管理员身份运行」,避免UAC确认后后续步骤权限不足
- 跳过编译步骤(临时测试):如果只是想先验证安装流程,可以添加
CompileAll=0参数跳过.pyc文件编译,绕开当前报错的环节:.\python-3.10.7-amd64.exe /quiet /log "C:\Users\kalen\Documents\python_install.log" InstallDir="C:\Users\kalen\Documents\PythonTest" CompileAll=0 - 使用完整离线安装包:如果你用的是Web安装包,换成Python官网的Full Installer(包含所有组件的EXE包),避免联网下载组件导致的异常
旧版本MSI安装包注意事项
如果尝试旧版本MSI格式安装包,参数要换回TargetDir,同时添加ALLUSERS=1(全局安装)或ALLUSERS=2(当前用户安装)参数,示例:
msiexec /i python-3.7.15-amd64.msi /quiet /log install.log TargetDir="C:\Users\kalen\Documents\PythonTest" ALLUSERS=2
内容的提问来源于stack exchange,提问作者Kalen
相关产品推荐
相关产品推荐

