最近,我不得不为64位的python3.5.6构建一个可嵌入的zip(因为官方下载页面没有为超过3.5.4的Python提供它们),下面是步骤。在
先决条件(一次性安装)
安装吉特
乌龟
VisualStudioC++构建工具2015(在构建最新的Python版本时,您可能需要版本2017)1
如果您还没有Sphinx,请安装它并将sphinx-build添加到PATH2:> python -m pip install user sphinx
> set PATH=%PATH%;C:\Users\jenkins\AppData\Roaming\Python\Python35\Scripts
如果尚未安装blurb,请安装它,必要时将blurb添加到PATH(如果您已经完成了上一步,那么您已经拥有了正确的PATH):> python -m pip install user blurb
> set PATH=%PATH%;C:\Users\jenkins\AppData\Roaming\Python\Python35\Scripts
配置生成环境克隆CPython repo。在这里,我只克隆我需要的标记:> git clone depth 1 branch v3.5.6 https://github.com/python/cpython
在repo dir中,生成NEWS文件3,4:> blurb merge -f Misc\NEWS
构建
现在可以触发构建:> Tools\msi\buildrelease.bat -x64 skip-nuget test testout
如果目标是32位arch,则将-x64替换为-x32。skip-nuget将忽略生成MSI安装程序。test testout将触发安装程序测试;如果需要,可以跳过它们。在
一旦构建完成,检查构建工件PCbuild\amd64\en-us\python-3.5.6-embed-amd64.zip。这是你的嵌入式拉链。在
构建第一次成功后,只要doc构建工件仍在repo中,就可以在以后的构建中跳过doc构建以进一步加速:> Tools\msi\buildrelease.bat -x64 skip-doc skip-nuget test testout
1请确保在VC++Build Tools安装程序中选择“Custom”,并选中所有选项;否则,可能会出现生成错误,如The code execution cannot proceed because ucrtbased.dll was not found等。我不是Windows专家,只是安装了所有可能的东西来消除错误。在
2查看buildrelease.bat帮助,似乎可以跳过带有skip-doc标志的文档构建,但使用该标记时,我得到了错误"C:\Users\jenkins\projects\cpython\Tools\msi\bundle\releaselocal.wixproj"
(Rebuild target) (1) ->
"C:\Users\jenkins\projects\cpython\Tools\msi\doc\doc.wixproj" (Rebuild target) (7) ->
(Link target) ->
C:\Users\jenkins\projects\cpython\Tools\msi\doc\doc_files.wxs(8): error
LGHT0103: The system cannot find the file 'python356.chm'. [C:\Users\jenkins\projects\cpython\Tools\msi\doc\doc.wixproj]
生成会因错误而中止。如果您设法在没有初始doc构建的情况下绕过这个问题(因此doc文件在build dir中可用),您可以跳过Sphinx安装。在
3否则,我得到构建错误"C:\Users\jenkins\projects\cpython\Tools\msi\bundle\releaselocal.wixproj" (Rebuild target) (1) ->
"C:\Users\jenkins\projects\cpython\Tools\msi\exe\exe.wixproj" (Rebuild target) (8) ->
C:\Users\jenkins\projects\cpython\Tools\msi\exe\exe_files.wxs(9): error
LGHT0103: The system cannot find the file '!(bindpath.src)Misc\NEWS'. [C:\Users\jenkins\projects\cpython\Tools\msi\exe\exe.wixproj]
4您可以用一个适当的make调用来替换该命令,但是我太懒了,无法解读Doc\Makefile。毕竟,新闻无论如何也不会在可嵌入的zip中出现;这只是为了让buildrelease.bat高兴。在