如何构建可嵌入的Python

时间:2017-02-16 17:14:15

标签: python python-3.x embeddable

我想知道如何为Windows构建可嵌入的Python。找不到该特定包的任何信息或构建配置。

我问的原因是我可以在Mac和Linux上使用相同的变体。

1 个答案:

答案 0 :(得分:2)

最近,我不得不为64位Python 3.5.6构建一个可嵌入的zip(由于官方下载页面未提供大于3.5.4的Python版本),请按以下步骤操作。

先决条件(一次性安装)

安装

  1. git
  2. TortoiseSVN
  3. Visual Studio C ++ Build Tools 2015(构建最新的Python版本时,您可能需要版本2017) 1
  4. 如果尚未安装Sphinx,请安装并将sphinx-build添加到PATH 2

    > python -m pip install --user sphinx
    > set PATH=%PATH%;C:\Users\jenkins\AppData\Roaming\Python\Python35\Scripts
    
  5. 如果尚未安装blurb,请安装它,并在必要时将blurb添加到PATH(如果已完成上一步,则说明您已经正确PATH):

    > python -m pip install --user blurb
    > set PATH=%PATH%;C:\Users\jenkins\AppData\Roaming\Python\Python35\Scripts
    

配置构建环境

  1. 克隆CPython存储库。在这里,我仅克隆所需的标签:

    > git clone --depth 1 --branch v3.5.6 https://github.com/python/cpython
    
  2. 在仓库目录中,生成NEWS文件 3,4

    > blurb merge -f Misc\NEWS
    

构建

现在您可以触发构建:

> Tools\msi\buildrelease.bat -x64 --skip-nuget --test testout

如果将32位拱门作为目标,请用-x64替换-x32--skip-nuget将忽略构建MSI安装程序。 --test testout将触发安装程序测试;您可以根据需要跳过它们。

构建完成后,检查构建工件PCbuild\amd64\en-us\python-3.5.6-embed-amd64.zip。这是您的嵌入式zip。

首次成功构建后,只要文档构建工件保留在回购中,您就可以在以后的构建中跳过文档构建以进一步提高速度:

> 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开心。