gpt4 book ai didi

当文件具有导入语句时,Python C api PyImport_importmodule 失败

转载 作者:行者123 更新时间:2023-11-30 03:44:55 24 4
gpt4 key购买 nike

我尝试使用 Python C api 从 C++ 中的 python 调用函数,测试成功。

但是如果我打算导入一个已经导入其他模块的模块,Pymodule_findmodule 将返回 Null,即使它在那里并创建了一个编译文件。这是我的代码

Py_Initialize();
PySys_SetPath("C:/Users/Mik/Documents/GitHub/youtube-dl");
PyObject * pythonFile = PyImport_ImportModule("test2");

这是该目录中名为 test2.py 的 python 文件,其中包含一个名为 test_dl.py 的文件和一个名为 TESTDL 的类

from test_dl import TESTDL 
def someFunction(someInput):
return 12345

一旦我添加了导入行,我的程序就不再将它识别为模块

编辑:原来 test_dl 的第一行是:

 from __future__ import unicode_literals

这就是我收到此 ImportError: No module named future

的原因

谢谢!

最佳答案

PySys_SetPath() 的函数调用会完全覆盖 Python 模块路径。结果是您的 Python 脚本 test_dl 找不到 Python 系统模块(在本例中为 __future__)并抛出异常。

您需要做的是将模块的目录附加到系统路径。为此,首先查询系统路径的现有值,然后将您的路径添加到其中:

PyObject *sys_path = PySys_GetObject("path");
PyList_Append(sys_path, PyString_FromString("C:/Users/Mik/Documents/GitHub/youtube-dl"));

关于当文件具有导入语句时,Python C api PyImport_importmodule 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com