问题标签 [python-embedding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
999 浏览

swig - 在 C++ 中扩展嵌入式 Python - 设计与 C++ 实例交互

有几个包可以帮助自动化编写 C\C++ 和其他语言之间的绑定任务。

就我而言,我想绑定 Python,此类包的一些选项是:SWIGBoost.PythonRobin

似乎直接的过程是使用这些包来创建 C\C++ 可链接库(大部分是静态函数)并使用它们来扩展高级语言。

但是,我的情况是我已经有一个用 C++ 开发的工作系统,因此计划将 Python 嵌入其中,以便未来的开发将在 Python 中进行。

我不清楚如何,如果可能的话,如何使用这些包来帮助扩展嵌入式 Python,使 Python 代码能够与系统中已经运行的各种 Singleton 实例进行交互,并实例化 C++类并与他们互动。

我正在寻找的是关于最适合这种情况的设计的见解。

0 投票
2 回答
1784 浏览

python - 是否可以将 PyPy 嵌入到 .NET 应用程序中?

我想将 Python 解释器嵌入到我的 .NET 应用程序中。当然,我知道 IronPython,但我对PyPy特别感兴趣,因为它的无堆栈支持和微线程。

然而,虽然 PyPy 可以针对 CLI 构建,但它看起来只是为您提供了一个独立的 Python 解释器,例如 python.exe。我还没有找到任何文档来构建可以实际嵌入到 .NET 主机应用程序中的东西。

有没有办法使用(无堆栈)PyPy 从 .NET 应用程序运行 Python 脚本,并允许这些脚本与主机应用程序提供的 CLR 对象进行交互?

0 投票
1 回答
3250 浏览

python - 如何找出 PyImportModule 导入失败的原因?

我在嵌入 Python (2.7.1) 的 C 应用程序中有此代码:

PyImport_ImportModule失败时,它返回 NULL。如何找出无法导入的原因?(例如,当导入模块工作时,在嵌入之外找到)。

(代码是py-exim-localscan 的一部分,我想添加更多关于在极少数情况下发生故障的信息)。

0 投票
2 回答
8659 浏览

python - 将 Python 嵌入到 C 中 - 导入模块

根据文档,我在使用适用于 C 的嵌入式 Python 时遇到问题- 每当我尝试使用导入的模块时,我都会得到:

PythonIncl.exe 中 0x1e089e85 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000004。

错误发生在PyObject_GetAttrString()方法中,文档没有太大帮助。我也尝试过使用IBM示例中的教程,但总是遇到相同的访问冲突。

以下是我似乎无法开始工作的教程之一的示例代码,这里有什么问题?

C 代码(在一个主文件中):

Python 代码(在名为 reverse.py 的文件中,位于同一文件夹中):

我正在使用 MSVS2008、Python 2.7 运行 XP 机器

一点上下文:我正在尝试在一个相当大的 C 程序中嵌入一个使用 OpenOPC 的小型 python 脚本,并希望在两者之间传输数据。但是,我已经在基本示例的概念验证测试中失败了。

0 投票
1 回答
1696 浏览

windows - 将 Python 嵌入到 Qt 应用程序中

我想在我的 Qt 应用程序中使用 Python。

构建问题

哪个库必须链接或有什么问题?

我在 x64 上使用 MinGW...哎呀,也许这就是问题所在 - Python 的 x64 库

0 投票
1 回答
268 浏览

c++ - 寻找非 Boost::Python C++ Python 嵌入框架

我有一个项目,用 C++ 编写,现在已经发展到需要嵌入式编程语言的阶段。我选择 Python 有几个原因,并且一直在尝试向动态加载的 Python 模块揭示 API。它运行良好,我认为在可预见的未来我会坚持使用 Python。

但我有个问题。我一直在花费大量时间将每个函数添加到我提供的 Python API 中,因此我一直在寻找一个可以减轻大部分重复的框架。

似乎一次又一次提到的框架是 Boost::Python。虽然我对 Boost::Python 没有任何反对意见——事实上,我可能会在不久的将来使用它——对于这个项目,我很遗憾不能使用与 Boost 相关的库。

还有其他不错的框架吗?我并不特别喜欢自己编写,但我也不希望继续使用直接的 Python C API。

谢谢!

0 投票
1 回答
1906 浏览

c++ - 将 python + numpy 代码嵌入到 C++ dll 回调中

我是 python 嵌入的新手。我正在尝试将 python + numpy 代码嵌入到 C++ 回调函数中(在 dll 中)

我面临的问题如下。如果我有:

一切正常。

但如果我有:

这在第二次到达 _import_array() 时崩溃;(意味着它适用于第一个回调)

如果我只进行一次python和numpy初始化并在析构函数中完成(因此不是每次初始化/完成),离开回调时一切都会崩溃..

我猜这里的问题是numpy,但我不知道如何解决它

0 投票
1 回答
4590 浏览

python - Python C API 不加载模块

我正在尝试使用 C API 在 C 中加载一个包含数学和 numpy 导入的 python 模块。我可以加载并运行该模块,但是,如果我导入数学模块,它就不起作用。

我正在使用 Arch Linux、Python 2.7.2 和 gcc。

这里的代码:

函数.py

以及如何在不需要使用脚本的情况下将 Python 脚本嵌入到 C 中?

0 投票
1 回答
5088 浏览

c++ - PyImport_ImportModule 和 import 语句是否加载到不同的命名空间中?

以下是在 C/C++ 中扩展嵌入式 Python 3.x的程序的典型示例:

我将emb模块添加到嵌入式解释器的内置函数中。我还想自动导入它,因此用户不必import emb在提供给我的嵌入式解释器的脚本中发出语句。我正在尝试两种导入方式,在(1)(2)行。

( 1)有效,无需在第(3)emb行的简单测试中显式导入即可找到该模块。但是,如果我注释掉第(1)行并取消注释第(2)行以使用 Python 3 调用的 C API 导入,则第(3)行会产生错误:

我想了解两种导入方式之间的区别。他们是否将模块导入不同的名称空间/范围

Python 3 文档引导我走这条路:

  1. PyImport_ImportModule最好参考Python内置函数来描述__import__()
  2. __import__()函数由 import 语句调用。

也许我犯了一个错误,假设PyImport_ImportModule是一对一的等价物,我应该使用PyImport_ImportModuleEx和正确的(究竟是哪个?)全局变量和局部变量,所以我的“emb”位于我的嵌入式解释器的全局命名空间中。

0 投票
1 回答
7369 浏览

python - 嵌入python

我试图从 C 代码中调用 python 函数,我遵循了一个示例 from here

我也有正确的包含文件目录、库目录,并链接了 python32.lib(我使用 python 32)但是错误是 python/C API,如 PyString_FromString、PyInt_FromLong、PyInt_AsLong 未定义(调试器中的错误)

这很奇怪,因为我也在使用其他 API,但它们都很好......

这里有什么问题??

Py_Initialize()、PyImport_Import()、PyModule_GetDict() 都可以正常工作,但 PyString_FromString 不行...