You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows平台静态编译构建Python 3.10?

Python 3.10 原生静态编译构建实操方案

官方build.bat的可用编译开关

官方PCBuild目录下的build.bat本身就支持静态编译相关配置,不存在所谓“未公开”,只是参数没有写在最显眼的帮助提示里,不需要手动修改解决方案文件切编译选项:

  • 核心静态编译参数:执行脚本时追加--static,会自动将解释器核心、所有内置依赖、标准扩展模块的运行时选项从/MD统一切换为/MT,自动添加Py_NO_ENABLE_SHARED等所需宏定义。之前手动改选项出现大量符号未找到错误,核心原因是只修改了主程序的编译选项,没有同步调整依赖库、扩展模块的配置,出现CRT混链问题。
  • 标准库打包参数:追加--zip-lib参数,编译完成后会自动将全量标准库打包为python310.zip文件;追加--pgo参数可启用按配置优化,提升最终二进制运行性能。
  • 环境要求:不需要安装付费版MSVS,也不需要用VS Code打开解决方案文件,只需要安装免费的Visual Studio Community版本,勾选「使用C++的桌面开发」组件,打开对应架构的原生工具命令提示符即可直接执行编译脚本,全程不需要启动IDE。

基础静态编译命令示例:

cd PCbuild
build.bat -c Release --static --pgo --zip-lib

编译完成后会生成不依赖外部CRT DLL的python.exe,同目录附带打包好的标准库zip。如果需要生成单个exe文件,不需要额外打包工具,直接用系统自带命令将zip追加到exe尾部即可:

copy /b python.exe + python310.zip python_single.exe

生成的单文件是原生静态构建版本,运行时不会解压资源到临时目录,解释器会自动从自身二进制尾部读取zip包内的标准库模块。

自定义.py/.pyc模块嵌入方法

官方静态编译流程原生支持将自定义模块嵌入二进制,不需要依赖第三方打包工具:

  • 编译前将需要嵌入的.py/.pyc文件放入源码的Lib对应目录,执行编译时这些文件会被自动打入标准库zip包,和解释器核心合并后即可随单exe分发。
  • 如果不需要zip包、要把模块字节码直接链接进exe二进制,可以将自定义模块加入PC/frozen.c的冻结模块列表,重新编译后所有模块会直接成为二进制的一部分,运行时不需要读取任何外部文件。

第三方cmake构建系统的使用说明

python-cmake-buildsystem目前已经支持Python 3.10版本,对应代码在仓库的3.10分支,不需要手动逐个下载编译依赖:

  • 构建时追加-DBUILD_STATIC=ON -DBUILD_ZIP_STDLIB=ON -DDOWNLOAD_DEPENDENCIES=ON参数,构建系统会自动拉取zlib、libffi、openssl等所有必需依赖,统一用静态运行时编译,自动完成标准库打包,不会出现zip归档模块加载失败的问题。

注意:静态编译最容易出现的问题是运行时选项不统一,只要有一个链接进最终exe的静态库、目标文件用了和主程序不一致的/MD//MT选项,就会触发符号找不到、启动崩溃等问题,优先用官方脚本自带的--static参数完成配置,不要手动零散修改单个项目的编译选项。

内容的提问来源于stack exchange,提问作者Hanz Dutchmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:06:21