繁体   English   中英

如何构建可嵌入的Python

[英]How to build embeddable Python

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

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

最近,我不得不为64位Python 3.5.6构建一个可嵌入的zip(因为官方下载页面不提供大于3.5.4的Python),这里是步骤。

先决条件(一次性安装)

安装

  1. 混帐
  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 ,请安装它,如果需要,可以向PATH添加blurb (如果您已完成上一步,则已经有正确的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. 在repo目录中,生成NEWS文件3,4

     > blurb merge -f Misc\\NEWS 

建立

现在你可以触发构建:

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

更换-x64-x32如果您所指定的32位拱门。 --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等等。我The code execution cannot proceed because ucrtbased.dll was not found是Windows专家,只是安装了一切可能来摆脱错误。

2看看buildrelease.bat帮助,看起来你可以跳过使用--skip-doc标志的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 毕竟,新闻不会落在嵌入式拉链中; 这只是为了让buildrelease.bat开心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM