18

我正在考虑在一个用C++编写的爱好项目中使用 Python 作为嵌入式脚本语言。我不想依赖单独安装的 Python 发行版。Python 文档似乎对一般用法非常清楚,但我找不到明确的答案。

在我的应用程序中部署 Python 解释器 + 标准库是否可行?像 Lua、Javascript (Spidermonkey)、Ruby 等其他语言会更适合这种用途吗?

以下是我衡量不同语言的标准:

  • 对外部安装的包没有/很少依赖
  • 具有良好功能集的标准库
  • 好语言:)
  • 不会产生巨大的安装包

编辑:

我想问题应该是:如何使用我的程序安装程序部署我自己的python库+标准库,这样平台是否已经安装了python都没有关系?

编辑2:

再澄清一件事。我不需要有关链接 C 和 Python 代码的细节的信息。

4

4 回答 4

18

将您的应用程序链接到 python 库(Windows 上的 pythonXX.lib)并将以下内容添加到您的 main() 函数中。

Py_NoSiteFlag = 1;  // Disable importing site.py
Py_Initialize();    // Create a python interpreter

将您需要的 python 标准库位放入一个 zip 文件(称为 pythonXX.zip)并将其和 pythonXX.dll 放在您分发的可执行文件旁边。查看 zipfile 模块中的 PyZipFile。

于 2009-02-15T20:28:31.767 回答
8

嵌入过程已完整记录:在另一个应用程序中嵌入 Python。这些文件建议了嵌入完成的几个级别,选择最适合您要求的任何级别。

嵌入 Python 的简单演示可以在源代码分发的目录 Demo/embed/ 中找到。

演示在这里,应该可以从发行版构建。

  • 非常高级别的嵌入
  • 超越非常高级别的嵌入:概述
  • 纯嵌入
  • 扩展嵌入式 Python
  • 在 C++ 中嵌入 Python

从标准库中,您可以选择不带有太多依赖关系的组件。

于 2009-02-15T17:28:19.920 回答
5

为了通过 gimel 扩展答案,没有什么可以阻止您发送 python.dll、使用它并设置正确的 PYTHONPATH 以使用您自己安装的 python 标准库。它们只是库和文件,您的安装过程可以这样处理它们。

于 2009-02-15T18:16:30.787 回答
0

如果您正在寻找一种简单地部署 Python 应用程序的方法,您可以使用Py2Exe。这将允许您的应用程序获得所需的所有依赖项,而无需担心用户计算机上已安装或尚未安装的内容。

[编辑] 如果 Py2Exe 不适合嵌入式应用程序,您能否简单地让您的安装程序检查相关文件并下载/安装缺少的任何内容?[/编辑]

[Edit2] Elmer会是你想要的吗?[/编辑2]

于 2009-02-15T17:42:00.887 回答