2009-02-15 102 views
16

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

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

下面是我在权衡不同的语言对标准:

  • 无/少依赖于外部安装的软件包
  • 具有很好的功能标准库设置
  • 尼斯语言:)
  • 隐而不宣导致一个巨大的安装包

编辑:

我想这个问题应该是: 如何部署自己的Python库+标准库,我的程序的安装程序,因此该平台是否已经安装或没有蟒蛇不要紧?

edit2:

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

回答

16

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

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

把你需要到一个zip文件(称为pythonXX.zip)Python标准库位,并把这个和你pythonXX.dll分发可执行旁边。查看zipfile模块中的PyZipFile。

8

嵌入过程已完整记录:Embedding Python in Another Application。 这些文件暗示了嵌入完成的几个级别,选择最适合您的要求的级别。

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

The demo is here,应该可以从发行版本构建。

  • 非常高级别嵌入
  • 除了非常高级别嵌入:概述
  • 纯嵌入
  • 伸出嵌入式Python
  • Python嵌入在C++

从标准库你可以选择comp蚂蚁不具有太多依赖性。

+0

添加链接到演示源。 – gimel 2009-02-15 17:37:42

+0

我认为这个问题还不清楚。我编辑了一下。也许现在更准确。 – 2009-02-15 17:41:08

0

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

[编辑]如果Py2Exe是一个不走的嵌入式应用,你能简单地得到您的安装程序来检查培训相关文件和下载/安装任何缺少的?[/编辑]

[EDIT2]莫非Elmer是你在找什么? [/ Edit2]

+0

这是否适用于嵌入Python的C++应用程序? – 2009-02-15 17:47:02

+0

我不确定(我从来没有尝试过)。 Py2exe只是将一个python应用程序,包括它需要的任何依赖关系转化为一个可执行文件。 – 2009-02-15 17:51:03

5

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

相关问题