如何将Python嵌入到独立的C++应用程序中? (即不依赖磁盘上的 Libs 文件夹)

问题描述 投票:0回答:1

我正在尝试将 python 嵌入到我的 C++ 应用程序中,但也使其独立,即不依赖于磁盘上的 python 依赖项,例如带有标准库脚本的

Libs
文件夹,但仍然能够使用它们。我可以找到一种方法,自己将
Libs
中的所有脚本存储在二进制文件中,并在运行程序后将它们加载到内存中,但问题是我不知道如何将它们“加载”到 python 解释器中直接从内存中,无论是文本还是二进制(编译的)脚本,而不将它们放到磁盘上,
pyinstaller
是如何做到的(它将所有编译的脚本提取到临时系统目录中)。

我想知道cpython中是否有任何类型的回调允许用户覆盖

import
关键字和通用模块导入逻辑,以便我可以从内存导入模块而不是从磁盘加载它。我在谷歌上找不到类似的东西。也许你知道有这样的功能吗?

提前致谢!

python c++ embed cpython
1个回答
0
投票

你可以利用虚拟文件系统(VFS)来做这样的事情,你不需要任何exe文件,只需获取python嵌入版本,配置pip,链接到python310.dll。

现在在调用 python dll hook winapi IO 函数之前,当 python 请求虚拟文件时,你从 vfs 反馈它。

我做到了,效果非常好。您可能想要创建一个二进制存档来从中传输数据。

© www.soinside.com 2019 - 2024. All rights reserved.