如何构建可嵌入的 Python

2024-06-26

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

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


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

先决条件(一次性安装)

Install

  1. git
  2. 乌龟SVN
  3. Visual Studio C++ Build Tools 2015 (you may need version 2017 when building latest Python versions)1
  4. If you haven't Sphinx installed, install it and add sphinx-build to PATH2:

    > python -m pip install --user sphinx
    > set PATH=%PATH%;C:\Users\jenkins\AppData\Roaming\Python\Python35\Scripts
    
  5. 如果你还没有blurb已安装,安装,添加blurb to 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. In the repo dir, generate NEWS file3, 4:

    > blurb merge -f Misc\NEWS
    

Build

现在您可以触发构建:

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

Replace -x64 with -x32如果你的目标是 32 位架构。--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 Make sure you select "Custom" in the VC++ Build Tools installer and check all the options; otherwise, you may get build errors like The code execution cannot proceed because ucrtbased.dll was not found etc. I'm no Windows expert by all means, just installed everything possible to get rid of the errors.

2 Looking at the buildrelease.bat help, it seems like you can skip the doc build with --skip-doc flag, but when using that, I got the error

"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 Otherwise, I get the build error

"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 You can replace the command with an appropriate make invocation, but I was too lazy to decipher the Doc\Makefile. After all, the news won't land in the embeddable zip anyway; this is only to make the buildrelease.bat happy.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何构建可嵌入的 Python 的相关文章

  • 创建一个支持 json 序列化的类以与 Celery 一起使用

    我正在使用 Celery 来运行一些后台任务 其中一项任务返回我创建的 python 类 考虑到有关使用 pickle 的警告 我想使用 json 来序列化和反序列化此类 有没有一种简单的内置方法可以实现这一目标 该类非常简单 它包含 3
  • Django表单中的隐藏字段不在cleaned_data中

    我有这个表格 class CollaboratorForm forms Form user forms CharField label Username max length 100 canvas forms IntegerField wi
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • python osmnx - 仅提取一个国家的大型高速公路

    我知道可以通过 OSMNX python 包提取城市的道路网络 详情请参阅https geoffboeing com 2016 11 osmnx python street networks https geoffboeing com 20
  • 如何向 Jupyter (ipython) 笔记本自动添加扩展?

    我已经安装了扩展 calico document tools 我可以使用以下命令从 Jupyter 笔记本中加载它 javascript IPython load extensions calico document tools 如何为每个
  • python 函数中的对象不可迭代错误

    我有一个简单的功能如下 comdList range 0 27 for t in comdList print t 但是它返回一个 in object not iterable 错误 在函数之外它工作正常 这是怎么回事 尝试这个 for t
  • 将列表列表替换为“压缩”列表列表,同时保持顺序

    我有一个列表列表 如我所附的代码所示 如果有任何共同值 我想链接每个子列表 然后我想用列表的精简列表替换列表的列表 例子 如果我有一个清单 1 2 3 3 4 I want 1 2 3 4 如果我有 4 3 1 2 3 I want 4 3
  • 如何在Python中将N毫秒添加到日期时间

    我正在设置一个日期时间变量 fulldate datetime datetime strptime date time Y m d H M S f 其中日期和时间是适合日期时间性质的字符串 如何将此日期时间增加 N 毫秒 Use timed
  • 使用 SQLAlchemy 查询 Pandas DataFrame 时重命名列

    当您将数据查询到 pandas 数据帧时 有没有办法保留 SqlAlchemy 属性名称 这是我的数据库的简单映射 对于 school 表 我将数据库名称 SchoolDistrict 重命名为较短的 district 我从 DBA 中删除
  • pip 升级到 pip 10.x.x 后解析需求文件的正确方法?

    所以今天我确实发现随着发布pip 10 x x the req软件包更改了其目录 现在可以在下面找到pip internal req 由于通常的做法是使用parse requirements功能在你的setup py从需求文件中安装所有依赖
  • Python - 从一定范围内随机采样,同时避免某些值

    我一直在阅读有关random sample 函数在random模块 但没有看到任何可以解决我的问题的东西 我知道使用random sample range 1 100 5 会给我来自 人群 的 5 个独特样本 我想得到一个随机数range
  • 如何隐藏 Tkinter python Gui

    有人知道如何隐藏 python GUI Tkinter 我已经创建了键盘记录器 对于 GUI 我使用了 python 模块 Tkinter 我想添加名为 HIDE 的按钮 因此当用户单击它时 它将隐藏 GUI 当用户按下 CTRL E 之类
  • Python for 循环前瞻

    我有一个 python for 循环 其中我需要向前查看一项以查看在处理之前是否需要执行某项操作 for line in file if the start of the next line 0 perform pre processing
  • ValueError:序列太大;不能大于 32

    我写了这段代码 from Crypto Cipher import AES import numpy as np import cv2 base64 BLOCK SIZE 16 PADDING pad lambda s s BLOCK SI
  • 导入错误:无法导入名称

    我有一个名为 google translate python 的库 https github com terryyin google translate python https github com terryyin google tra
  • 如何限制单元测试的最大运行时间?

    我目前正在运行一些单元测试 这些测试可能需要很长时间才能失败或无限期地运行 在成功的测试运行中 它们总是会在一定的时间内完成 是否可以创建一个 pytest 单元测试 如果在一定时间内未完成 该测试就会失败 您可以安装 pytest tim
  • Mac 无法安装 Tensorflow

    我检查了我的 pip3 和 python3 版本 tensorflow MacBook Pro de Hector 2 tensorflow hectoresteban pip3 V pip 10 0 1 from Users hector
  • 合并共享属性的节点

    EDITED 我真的需要 Networkx graph 专家的帮助 假设我有以下数据框 我想将这些数据框转换为图表 然后我想根据描述和优先级属性将两个图映射到相应的节点 df1 From description To priority 10

随机推荐

  • TfidfVectorizer 赋予停用词较高的权重

    给出以下代码 import pandas as pd from sklearn feature extraction text import TfidfVectorizer import urllib request the lib tha
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • Wingdings/Symbol 字符与其 Unicode 等效项之间的映射

    MsWord 使用 Wingdings 和 Symbol 字符作为项目符号 默认情况下它们的十六进制值为 F0A7 和 F0B7 我想将项目符号转换为其 Unicode 等效项 当然 这取决于实际使用的字体 因此 F0A7 Wingding
  • 如何在C中复制结构体数组

    我已经定义了类似的结构 typedef struct char oidkey int showperf char oidrealvalue BUFSIZE char oidlimits struct oidpairs 我有结构数组 stru
  • 如何使用 VBA 在 Excel 2010 工作表中添加选项按钮以进行分组?

    I want to add many option button to an excel worksheet not to a VBA form and want to group them by row The result should
  • 按键时应用程序窗口恢复

    在我的应用程序中 我添加了一项功能 可以在按键时 按 ESC 或暂停 中断按钮时 将应用程序窗口最小化到系统托盘 因此 当按下它们时 窗口会最小化 有没有办法添加功能来在某些按键上恢复应用程序窗口 即使其他应用程序当前处于活动状态 例如我按
  • gRPC 服务器如何注意到客户端已取消服务器端流式调用?

    我想使用 gRPC 让客户端订阅服务器生成的事件 我有一个 RPC 声明如下 rpc Subscribe SubscribeRequest returns stream SubscribeResponse 其中返回的流是无限的 要 取消订阅
  • 背景上可见的片段

    我正在开发一个应用程序 该应用程序具有在 XML 文件中定义的三个片段 HeaderFragment MainFragment FooterFragment 第一个屏幕启动三个片段 Header 和 FooterFragment 是静态的
  • foreach 与 LINQ .ForEach() [重复]

    这个问题在这里已经有答案了 为什么LINQ ForEach需要一个List对象 而foreach声明只需要IEnumerable 我更喜欢使用foreach当有多行和单行语句的 LINQ 时 只是为了可读性 但什么是首选 为什么 为什么会有
  • 使用 Bearer Token 在 C# 中构建 post HttpClient 请求

    我并不是真正的 C 专家 我有一个 C 中的 post httpRequest 需要开发 为此我创建了这个方法 它接受一个 Uri 一个对象和一个不记名令牌 该方法旨在构建调用请求 private HttpClient client new
  • 在 SelectList 集合中设置所选项目

    我有一堂具有以下属性的课程 它构建了一个SelectList现有列表中的对象 然后设置所选项目 public SelectList ProviderTypeList get SelectList list new SelectList my
  • 卡桑德拉吃掉内存

    I have 卡桑德拉2 1并设置以下属性 MAX HEAP SIZE 5G HEAP NEWSIZE 800M memtable allocation type heap buffers top 实用程序显示 cassandra 占用了
  • 如何在 Tomcat7 中部署 Grails 3.0.1 war 文件?

    我怎样才能部署一个Grails 3 0 1Tomcat7 的非嵌入式版本中的 war 文件 我收到的只是一个空白页或 404 错误 我可以成功部署其他 war 文件 所以我知道这不是 Tomcat 的问题 我的版本以及我采取的步骤如下 Se
  • 如何使用 pandoc 将目录中的所有 .md 文件编译为单个 .pdf,同时保留 YAML 标头数据?

    我有一个 md 文档目录 每个文档都包含一个指定文档的 YAML 标头title author date categories tags等 该目录包含日记条目 文件名只是条目的日期 我使用 pandoc 为每个 md 文件生成 PDF 没有
  • 如何使用 pollingThrottle 和 pollingInterval?

    所以我的应用程序中有一些东西我不需要立即反应并找到有关属性的信息轮询节流阀 and 轮询间隔在文档中 所以这里基本上是我设法找到的有关这些属性的所有信息 pollingIntervalMs 数 仅限服务器 在服务器上观察时轮询此查询的频率
  • SSRS报告不显示数据

    我刚刚创建了 SQL Server 2005 SSRS 报告 数据未显示在预览窗格中 数据集是根据字符串参数从存储过程正确填充的 我可以在数据窗格中执行它 在预览窗格中运行报表时 会显示正确的行数 但单元格的内容不包含任何数据 源数据集基于
  • Visual Studio 代码中的“Git:gpg 未能签署数据”

    全新安装 Linux 后 我尝试设置我的环境 并且不断收到Git gpg failed to sign the data在本地提交更改时出错 我使用的是 Visual Studio Code 专有版本 而不是开源版本 gitconfig u
  • 使用 SignalR 检测“服务器离线”

    我们尝试在低带宽环境中使用 SignalR 在该环境中 与后端服务器的连接可以随机出现和消失 并且我们希望我们的 Web 应用程序能够做出适当的响应 看起来这个连接 API 在过去的一年里一直在变化 但根据最新的文档 我尝试连接 conne
  • ngTemplateOutlet - Angular 5 嵌套模板驱动表单

    我有一个从我的组件之一传递的 ng template 并且我有一个占位符来接受传递的 ng template 到我的组件上 如下 ngTemplateOutlet 中所示 div div
  • 如何构建可嵌入的 Python

    我想知道如何为 Windows 构建可嵌入的 Python 找不到该特定包的任何信息或构建配置 我问的原因是我可以在 Mac 和 Linux 上使用相同的变体 最近 我必须为 64 位 Python 3 5 6 构建一个可嵌入的 zip 因