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 找不到模块的主要内容,如果未能解决你的问题,请参考以下文章

windows找不到指定模块怎么办?

matlab安装,找不到指定模块,程序

找不到指定模块

解决找不到pip模块的问题

S7200编程时找不到添加模似量模块设置

电脑找不到指定的模块是怎么回事?