使用Python或其他嵌入式脚本语言部署应用程序

时间:2009-02-15 17:12:33

标签: c++ python deployment scripting-language embedded-language

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

在我的应用程序中部署Python解释器+标准库是否可行? Lua,Javascript(Spidermonkey),Ruby等其他语言会更好用于此用途吗?

以下是我正在权衡不同语言的标准:

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

编辑:

我想问题应该是: 如何使用我的程序的安装程序部署我自己的python库+标准库,以便平台是否已经安装了python并不重要?

edit2:

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

4 个答案:

答案 0 :(得分:17)

将您的应用程序链接到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。

答案 1 :(得分:8)

嵌入过程已完整记录:Embedding Python in Another Application。 这些文件提出了嵌入工作的几个层次,选择最符合您要求的层次。

  

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

The demo is here,应该能够从发行版构建。

  
      
  • 非常高级嵌入
  •   
  • 超高级嵌入:概述
  •   
  • Pure Embedding
  •   
  • 扩展嵌入式Python
  •   
  • 在C ++中嵌入Python
  •   

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

答案 2 :(得分:5)

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

答案 3 :(得分:0)

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

[编辑]如果Py2Exe不适用于嵌入式应用程序,您是否可以让安装程序检查相关文件并下载/安装任何缺少的文件?[/编辑]

[Edit2] Elmer可以成为您想要的吗? [/ EDIT2]