PyImport_Import 找不到模块
Posted
技术标签:
【中文标题】PyImport_Import 找不到模块【英文标题】:PyImport_Import cannot find module 【发布时间】:2020-08-14 03:19:27 【问题描述】:我正在尝试在我的 c++ 中调用 python 函数
当我导入我的 python 模块时,它给出了这个错误:
ModuleNotFoundError: No module named 'test'
这是我导入模块的方式:
#define PY_SSIZE_T_CLEAN
#include <Python.h>
int main()
Py_Initialize();
PyObject *pName = PyUnicode_FromString("test");
PyObject *pModule = PyImport_Import(pName);
if (pModule == nullptr)
PyErr_Print();
std::exit(1);
Py_Finalize();
return 0;
我觉得这一定与我的项目结构有关。目前看起来是这样的:
project
|-- main.cpp
|-- test.py
我不确定是否值得一提,但可执行文件位于同一目录中,并且它也在该目录中运行。
我该如何解决这个问题?
【问题讨论】:
你能检查一下是否“。”在模块的搜索路径上?您可以将sys.path
的内容转储到 PyEval 语句中以找出答案。
可以导入一行PyImport_ImportModule("test")
【参考方案1】:
在Py_Initialize()
之前使用Py_SetPath
来设置sys.path
。
下面是初始化解释器之前可以做的更长的列表:pre-init-safe
隔离嵌入式 Python 解释器并正确设置路径,以避免部分使用已安装 Python 版本的模块出现问题。
【讨论】:
【参考方案2】:通过设置“PYTHONPATH”环境变量解决了这个问题:
setenv("PYTHONPATH", ".", 1);
感谢@Botje
【讨论】:
以上是关于PyImport_Import 找不到模块的主要内容,如果未能解决你的问题,请参考以下文章