我使用cpython api从C/C++加载py。
但是,如果我不想在客户端安装cpython,我可以在我的程序中使用cpython的dll包吗?
如何做到这一点?
发布于 2010-07-10 23:18:25
像PyInstaller (跨平台)和py2exe (仅适用于Windows)这样的安装器构建器基本上是以一种通用的方式为您完成这项工作的,除了生成的包核心的可执行文件是它们自己的,而不是您的。
但基本上,你可以模仿他们的行为,用你需要的所有Python库模块建立一个.zip文件(或者,如果你想允许从你的应用程序中运行的python代码从那里导入任何东西,只需压缩标准python库中的所有内容),并遵循Python文档的Embedding Python in Another Application部分中的简单建议。
请注意,嵌入Python等同于扩展Python,加上一些初始化和完成解释器本身的代码,以及我刚才提到的一些打包工作;如果您从未编写过Python扩展,我建议您先练习一下,因为它是任务中最重要的部分(对于boost python这样的帮助器,这不是很难,但如果您选择使用“纯C”级别来做,则需要做更多的工作)。
发布于 2010-07-10 23:11:31
您不需要设置Python来将其嵌入到应用程序中。Python解释器的核心是一个共享库,您可以将其动态加载到应用程序中并与之一起分发。
在官方文档中阅读embedding Python。而且,对于Linux来说,this article看起来很好,也很全面。对于Windows,则为read the notes here。
下面是讨论这个问题的another SO question。
发布于 2010-07-10 23:21:56
对于一个非律师、非英语母语的人来说,Python许可证可能很难理解。因此,您可以重新分发未修改的DLL,因为它包含版权声明。
礼貌的做法是在程序或文档中的某处给出类似的信用,如"This program contains the Python Language Interpreter version X.XX http://python.org for more information“或类似的内容。
https://stackoverflow.com/questions/3219699
复制相似问题