Skip to content

Instantly share code, notes, and snippets.

@pruidong
Last active January 24, 2021 08:04
Show Gist options
  • Save pruidong/32dc1b60c1c1d8467c366ec9067fa59b to your computer and use it in GitHub Desktop.
Save pruidong/32dc1b60c1c1d8467c366ec9067fa59b to your computer and use it in GitHub Desktop.
Windows 编译CPython

Windows 编译CPython

所需环境:

  • Windows 10 x64;
  • Visual Studio 2019(必须安装在默认路径下面.同时需要安装C++开发组件和Python开发组件);
  • (可选)用作引导的Python(最好和要编译的Python,版本号接近)

参考链接:

后面两个地址可能发现改变,请以CPython官方Github仓库介绍为准.

获取源码:

# cmd或者PowerShell

# -b 为选择指定标签.
git clone -b v3.10.0a4 https://github.com/python/cpython.git

运行依赖安装

# cmd或PowerShell

/PCbuild/build.bat

可能的问题

网络原因,导致依赖下载失败.

此操作需要从Github.com中下载相关依赖,可能多次失败.也可以手动下载依赖,放到/externals目录里面.

例如,可以先在/PCbuild目录的get_external.py文件

def fetch_zip(commit_hash, zip_dir, *, org='python', binary=False, verbose):
    repo = f'cpython-{"bin" if binary else "source"}-deps'
    url = f'https://github.com/{org}/{repo}/archive/{commit_hash}.zip'

下面增加输出下载地址:

    print(url)

拿到下载地址后,就可以解压放到/externals里面.

/externals里面的文件命名参考(下载解压后,需要修改文件名为如下格式):

  1. sqlite-3.33.0.0
  2. tcltk-8.6.10.0

构建

可以有两种方式.

直接在Visual Studio中运行

依赖安装成功后,可以在Visual Studio中找到如下解决方案文件.

pcbuild.sln

之后就可以直接在Visual Studio中进行开发调试了.

构建可运行的包

构建测试包

如果需要构建成可执行文件(.exe),则需要通过/Tools/msi/build.bat进行构建.

下面的命令表示构建一个测试包,在x64位系统上运行,包含Python文档:

# cmd或者PowerShell

/Tools/msi/build.bat -x64 --doc

构建成功后,构建结果在: /PCbuild/amd64/en-us 目录中.

关于/Tools/msi/build.bat命令的更多参数,可以使用/Tools/msi/build.bat -h进行查看.

构建发行包

构建发行包需要使用/Tools/msi/buildrelease.bat脚本,参数和/Tools/msi/build.bat类似.

官方构建的发行包,包含了代码签名证书.

所以,我们构建的时候,也可以传入证书相关信息(我没试..).

# cmd或者PowerShell
/Tools/msi/buildrelease.bat -x64 -D

-D 跳过重建文档.文档是发行版所必需的,如果整合不可用,则构建失败.

更多命令,依然可以使用/Tools/msi/buildrelease.bat -h来查阅.

构建完成后,就可以把exe安装包放到一台新电脑上试一下了.

更新

  • 2021-01-24 初次整理.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment