文章目录
- 目标
- 环境准备
- VS 2022
- cpython源码
- 终端加速工具
- 编译
- 具体步骤
- 注意事项
- 错误&解决
- 参考资料
目标
- 编译生成如同官网安装的python一般的exe文件(存放在阿里云盘)
环境准备
无论是IDE、开发组件或者第三方库,本人的观点是”越新越好“,当然有时存在某个版本出现框架重构的情况,这就需要自己斟酌了。
VS 2022
-
工具选择
勾选如下图所示
-
.NET SDK安装
如下图所示,二选一
cpython源码
本文以python3.10.12为例子。python官网通知自该版本后 Python 3.10进入"security fixes only" 阶段。
终端加速工具
该工具不是必须,没有就多试几次。
编译
具体步骤
- 1 解压或者
git checkout v3.10.12
- 2 进入源码根目录里面的
PCBuild
文件夹下 - 3 执行
.\get_externals.bat
(使用虚拟python环境)
- 4 进入
Tools\msi
并执行.\get_externals.bat
命令
- 5 执行
.\buildrelease.bat -h
根据展示的命令选择编译路径,32或64位等参数。其中-o
输出路径最好在PCbuild文件夹下(否则会有问题,可以试一试)。
注意事项
- 步骤3和步骤4使用
NuGet
下载编译时依赖的工具、库等 - 在执行步骤5时,你最好使用虚拟python环境,如下图所示
环境中的包是执行编译时自动下载的,这也说明你也需要一个python环境。 - 步骤3、4和5可以只保留5,但考虑存在网络波动拆分为三部分。
- 我在文章开头放了我编译好的,种种原因zip文件竟然不能上传。
- 后续应该会更新安装包。
错误&解决
-
错误:PrepareForBuild:
externals\windows-installer\wix\wix2010.targets(735,5): error MSB4062: 未能从程序集 D:\Build\Python-3.10.13\externals\windows-installer\wix\WixTasks.dll 加载任务“ResolveWixReferences”。未能加载文件或程序“Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 请确认 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。解决方法:开启.NET Framework 3.5
-
错误:v143 buildtools 检测不到问题
Python3.11.10及以后将只进行“安全修复”,手动编译会遇到如下错误:错误 MSB8020 无法找到 v143 的生成工具(平台工具集 =“v143”)。若要使用 v143 生成工具进行生成,请安装 v143 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”解决方法:
增加MSVC v143 -VS 2022 C++ ARM64/ARM64EC build tools
工具集,似乎是为构建安装包准备的,由WiX≥3.14引起的。
参考资料
- cpython
- 为Windows编译Python安装包
- v143缺失问题
文章目录
- 目标
- 环境准备
- VS 2022
- cpython源码
- 终端加速工具
- 编译
- 具体步骤
- 注意事项
- 错误&解决
- 参考资料
目标
- 编译生成如同官网安装的python一般的exe文件(存放在阿里云盘)
环境准备
无论是IDE、开发组件或者第三方库,本人的观点是”越新越好“,当然有时存在某个版本出现框架重构的情况,这就需要自己斟酌了。
VS 2022
-
工具选择
勾选如下图所示
-
.NET SDK安装
如下图所示,二选一
cpython源码
本文以python3.10.12为例子。python官网通知自该版本后 Python 3.10进入"security fixes only" 阶段。
终端加速工具
该工具不是必须,没有就多试几次。
编译
具体步骤
- 1 解压或者
git checkout v3.10.12
- 2 进入源码根目录里面的
PCBuild
文件夹下 - 3 执行
.\get_externals.bat
(使用虚拟python环境)
- 4 进入
Tools\msi
并执行.\get_externals.bat
命令
- 5 执行
.\buildrelease.bat -h
根据展示的命令选择编译路径,32或64位等参数。其中-o
输出路径最好在PCbuild文件夹下(否则会有问题,可以试一试)。
注意事项
- 步骤3和步骤4使用
NuGet
下载编译时依赖的工具、库等 - 在执行步骤5时,你最好使用虚拟python环境,如下图所示
环境中的包是执行编译时自动下载的,这也说明你也需要一个python环境。 - 步骤3、4和5可以只保留5,但考虑存在网络波动拆分为三部分。
- 我在文章开头放了我编译好的,种种原因zip文件竟然不能上传。
- 后续应该会更新安装包。
错误&解决
-
错误:PrepareForBuild:
externals\windows-installer\wix\wix2010.targets(735,5): error MSB4062: 未能从程序集 D:\Build\Python-3.10.13\externals\windows-installer\wix\WixTasks.dll 加载任务“ResolveWixReferences”。未能加载文件或程序“Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 请确认 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。解决方法:开启.NET Framework 3.5
-
错误:v143 buildtools 检测不到问题
Python3.11.10及以后将只进行“安全修复”,手动编译会遇到如下错误:错误 MSB8020 无法找到 v143 的生成工具(平台工具集 =“v143”)。若要使用 v143 生成工具进行生成,请安装 v143 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”解决方法:
增加MSVC v143 -VS 2022 C++ ARM64/ARM64EC build tools
工具集,似乎是为构建安装包准备的,由WiX≥3.14引起的。
参考资料
- cpython
- 为Windows编译Python安装包
- v143缺失问题