如何将C ++ python扩展导入另一个目录中的模块?

时间:2010-02-12 22:24:55

标签: python import module

这是目录结构:

app/
    __init__.py
    sub1/
        __init__.py
        mod1.py
    sub2/
        __init__.py
        sub2.so
        test_sub2.py
  • 文件夹应用程序位于我的PYTHONPATH
  • 所有__init__.py文件都是空的。
  • 共享库sub2.so是一个C ++扩展模块,我使用cmake和boost-python编译。
  • test_sub2.py是sub2.so。
  • 中定义的类的测试脚本
  • 如果我从sub2目录运行test_sub2.py,它会正确导入模块并且测试通过。

如何将sub2.so中的A类导入mod1.py?

3 个答案:

答案 0 :(得分:2)

导入它的方法是从任何源文件导入app.sub2.sub2。您的测试实际上应该位于app之外,并使用该模块路径访问扩展模块。

答案 1 :(得分:0)

尝试

import .app.sub2.sub2 
你的mod1.py文件中的

答案 2 :(得分:0)

使用相对导入:

from ..sub2.sub2 import A

这类似于相对路径“../ sub2 / sub2.so”。