我想知道如何为 Windows 构建可嵌入的 Python。找不到该特定包的任何信息或构建配置。
我问的原因是我可以为 Mac 和 Linux 使用相同的变体。
我想知道如何为 Windows 构建可嵌入的 Python。找不到该特定包的任何信息或构建配置。
我问的原因是我可以为 Mac 和 Linux 使用相同的变体。
最近,我不得不为 64 位 Python 3.5.6 构建一个可嵌入的 zip(因为官方下载页面没有为大于 3.5.4 的 Python 提供它们),这里是步骤。
安装
如果你还没有Sphinx
安装,安装它并添加sphinx-build
到PATH
2:
> 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 存储库。在这里,我只克隆我需要的标签:
> git clone --depth 1 --branch v3.5.6 https://github.com/python/cpython
在 repo 目录中,生成NEWS
文件3, 4:
> blurb merge -f Misc\NEWS
现在您可以触发构建:
> Tools\msi\buildrelease.bat -x64 --skip-nuget --test testout
如果您以 32 位拱门为目标,请替换-x64
为。将省略构建 MSI 安装程序。将触发安装程序测试;如果你愿意,你可以跳过它们。-x32
--skip-nuget
--test testout
构建完成后,检查构建工件PCbuild\amd64\en-us\python-3.5.6-embed-amd64.zip
。这是您的可嵌入拉链。
首次构建成功后,只要文档构建工件保留在 repo 中,您就可以在以后的构建中跳过文档构建以进一步加快速度:
> Tools\msi\buildrelease.bat -x64 --skip-doc --skip-nuget --test testout
1确保在 VC++ Build Tools 安装程序中选择“自定义”并检查所有选项;否则,您可能会遇到诸如此类的构建错误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]
并且构建因错误而中止。如果您设法在没有初始文档构建的情况下绕过此问题(因此文档文件在构建目录中可用),您可以跳过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
快乐。