问题标签 [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 回答
709 浏览

delphi - 重置 Python4Delphi 引擎?

我将 D7 与 Python4Delphi 一起使用。在用户导入大量 py 文件后,Python 会缓存所有这些模块。我需要一种方法来重置 Py 引擎。这样 Py 就会“忘记”所有用户导入的模块,并且我有“干净”的 Python,而无需重新启动应用程序。怎么做?

0 投票
2 回答
1149 浏览

macos - Mavericks:将 Python 解释器编译成静态库

我想将Python 3.3解释器嵌入到Mac OS 10.9 Cocoa 应用程序中以添加一些 Python 功能。从我从另一个 StackOverflow 问答中读到的内容,最好创建一个静态库(页脚中的引用)而不是动态库。

这是我尝试从 Python 解释器创建静态库(.a 文件)的内容:

  1. 我已经从这里下载了 Python 3.3 (CPython) 源代码。
  2. 我已经*static*Modules/Setup.dist文件中添加了
  3. 我输入了以下内容来编译终端中的源代码:
    • ./configure LDFLAGS="-static -static-libgcc" CPPFLAGS="-static"

我得到的结果如下:

我的理解是,gcc 实际上在 Mavericks 中被 Apple LLVM 5.0 版(clang-500.2.79)(基于 LLVM 3.3svn)所取代。

另外,我在config.log中发现了以下内容...

问题:如何使用Apple LLVM编译 Python 3.3,以便拥有一个静态库,例如libpython3.3.a


0 投票
0 回答
243 浏览

python - 嵌入 Python,在 main() 中有效,但在 WinMain() 中无效

我将 Python 3.4 嵌入到用 C++ 编写的应用程序中。当我使用 main() 进入程序时一切正常,但是当我使用 WinMain() 时它崩溃了。当在 main() 中调用 Py_Initialize 时,一切正常,但在 WinMain 中失败。我猜这与控制台不存在有关,因为 WinMain() 不会创建控制台。

谢谢!

0 投票
2 回答
952 浏览

python - 从 python float 转换为 C++ double 时的精度损失

我在我的 c++ 程序中嵌入了 python 代码。使用 PyFloat_AsDouble 会导致精度损失。它最多只能保留 6 位精度数字。我的程序对精度非常敏感。对此有已知的解决方法吗?以下是相关的 C++ 代码:

retVals[i] 的精度只有 6,而 python 代码返回的值是一个浮点数,可以有更高的精度。如何获得全精度?

0 投票
0 回答
167 浏览

python - 如何将填充的 c 结构传递给 python(没有 ctypes)

如何在不使用 ctypes 的情况下将 ac 结构传递给 python?

我有一个指向stats_res_t我试图返回 python 的结构的指针。

我正在尝试类似的东西

但它会导致python中的段错误。

是否可以使用将填充的结构传递给 python PyObject

0 投票
1 回答
2892 浏览

c++ - 如何在 Windows 中获取 PyErr_Print 的输出或将其保存为字符串

我正在编写嵌入式 python 解释器,有一个函数PyErr_Print()https://docs.python.org/3/c-api/exceptions.html)写入标准错误文本,解释为什么我调用的 C 函数失败。

这似乎不适用于 Windows,因为它从不向终端写入任何内容,有没有办法将其重定向到某个地方,或者存储为字符串以便我可以看到它?

0 投票
1 回答
2473 浏览

c# - Pythonnet:如何使用嵌入式 Python 解释器?

我正在尝试使用 pythonnet 使用来自 C# 的嵌入式 python 解释器(在https://github.com/renshawbay/pythonnet找到的 python3 兼容版本)

我的解释器位于 D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime 并具有来自 python 发行版的“Lib”和“Libs”文件夹。

我已经使用以下代码进行了测试:

但是,它不起作用。我得到一个“SystemError:PyEvalCodeEx:NULL globals”。每次我尝试从 python 获取对象时,代码都会失败。

我究竟做错了什么?

0 投票
1 回答
224 浏览

python - Python C api遍历模块中的类

在这种情况下,模块是从文件加载的 python 脚本。我在互联网上找不到任何关于此的信息。

如果我可以遍历模块中的所有对象,我可以使用 PyClass_Check 过滤类。但我也不知道该怎么做。

这样做的原因是用户将使用从基类派生的类来定义游戏内容。

我曾尝试在模块上使用 PyObject_GetIter() ,但它返回 NULL (显然不能以这种方式迭代。)

0 投票
3 回答
1842 浏览

python - 如何在多平台 C++ 框架 (JUCE) 中嵌入 Python?

我正在使用 JUCE 设计音乐训练游戏——一个多平台 C++ 框架,它允许我编写接近线路的音频/视频。

然而,我已经用 Python 编写了我的游戏玩法(控制流/数据处理)——它很复杂,我希望不断改变它,以便我可以尝试不同的游戏玩法。Python 非常适合这种快速原型设计工作。

所以我希望我的(平台独立,所以 Win/OSX/Lin/iOS/And)C++ 启动 Python 运行时,为其提供一个 .py 文件,然后在该 .py 中调用各种函数。此外,我希望能够从 .py 回调 C++ 代码。

这是相关的官方 Python 文档:https ://docs.python.org/2/extending/extending.html

这是一篇 CodeProject 文章: http: //www.codeproject.com/Articles/11805/Embedding-Python-in-CC-Part-I

但是,它们似乎都没有解决多平台问题。

该技术似乎是与库 libpython.a 和#include 链接,其中包含用于启动运行时环境、加载脚本、执行 python 代码等的各种功能。

但是这个 libpython.a 肯定需要每个平台单独编译吗?如果是这样,这将不是一个非常干净的解决方案,那么我是否可以将 Python 源代码添加到我的项目中并让它编译 .a?

我该怎么做呢?

编辑:https ://wiki.python.org/moin/boost.python/EmbeddingPython

EDIT2:我很确定在这里尝试引入完整的 CPython 源代码是矫枉过正——一定有人在不支持任何系统调用/多线程/花哨的东西的 C/C++ 中做了一些精简的 Python 实现—— - 仅通过 Python 语法逐行工作。通过https://wiki.python.org/moin/PythonImplementations查看,但我看不到明显的候选人。

EDIT3:https://github.com/micropython/micropython应该添加到最后一页,但它看起来仍然不是我所追求的

0 投票
1 回答
1109 浏览

python - 将 python 嵌入到 C++ 中无法按预期工作

我将 Python 嵌入到 C++ 应用程序中。

当我运行以下 C++ 代码时,它会返回时间戳,它工作正常。

现在我想得到sys.path. 但是类似的代码给我带来了错误:

我想问题是这time.time()是一个函数调用,而sys.path它是一个变量。如果是这样的话:

  1. 如何获得变量的结果?
  2. 如何正确地将结果(在本例中为 a list)转换为 C++ 中有意义的内容,例如字符串数组?

如果没有,如何进行?我正在使用 Python 2.7.6

谢谢。