使用boost python嵌入python时导入错误

Posted

技术标签:

【中文标题】使用boost python嵌入python时导入错误【英文标题】:import error in embedding python with boost python 【发布时间】:2014-02-06 06:12:29 【问题描述】:

我有以下代码

#include <boost/python.hpp>

int main()

    Py_Initialize();
    namespace python = boost::python;
    try 
        python::object main = python::import("sample");
     catch(...) 
        PyErr_Print();
        PyErr_Clear();
    

我收到以下错误:

ImportError: No module named sample

我将我的 sample.py 放在与该程序相同的目录中。

【问题讨论】:

调试导入问题时,将PYTHONVERBOSE 环境变量设置为2 会很有帮助。这将导致 Python 打印 python 尝试导入文件的位置。 【参考方案1】:

这是因为 python::import 没有在当前目录中查找。我知道两种解决方法:

设置 PYTHONPATH 以查看当前目录 (linux):

export PYTHONPATH=`pwd`:$PYTHONPATH

或者...

在您的代码中设置 python 搜索模块路径(它还为您发现的问题提供了更好的解释): How does import work with Boost.Python from inside python files

【讨论】:

以上是关于使用boost python嵌入python时导入错误的主要内容,如果未能解决你的问题,请参考以下文章

导入 matplotlib.pyplot 时嵌入式 python 崩溃

c++ 中的嵌入式 python 代码 - 导入 python 库时出错

嵌入式 Python3 在导入本地模块时引发异常

从 C++ 应用程序中的嵌入式 Python 调用时,多数组扩展库上的 Numpy 导入失败

C 中的嵌入式 python:有没有办法从压缩的 python 存档中正确导入 numpy?

嵌入式 Python 加载模块但不加载该模块的内部导入语句