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

3 投票
3 回答
3300 浏览
提问于 2025-04-15 19:13

这是文件夹的结构:

app/
    __init__.py
    sub1/
        __init__.py
        mod1.py
    sub2/
        __init__.py
        sub2.so
        test_sub2.py
  • 文件夹 app 在我的 PYTHONPATH 里。
  • 所有的 __init__.py 文件都是空的。
  • 共享库 sub2.so 是我用 cmake 和 boost-python 编译的 C++ 扩展模块。
  • test_sub2.py 是一个测试脚本,用来测试 sub2.so 里定义的类。
  • 如果我从 sub2 文件夹运行 test_sub2.py,它能正确导入模块,测试也通过了。

我该如何在 mod1.py 中导入 sub2.so 里的类 A 呢?

3 个回答

0

使用相对导入:

from ..sub2.sub2 import A

这就像是一个相对路径 "../sub2/sub2.so"。

0

试试在你的 mod1.py 文件里写

import .app.sub2.sub2 

2

导入这个模块的方法是从任何源文件中导入 app.sub2.sub2。你的测试代码应该放在 app 之外,然后通过这个模块路径来访问扩展模块。

撰写回答