代码之家  ›  专栏  ›  技术社区  ›  Andrew Wagner

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

  •  2
  • Andrew Wagner  · 技术社区  · 15 年前

    目录结构如下:

    app/
        __init__.py
        sub1/
            __init__.py
            mod1.py
        sub2/
            __init__.py
            sub2.so
            test_sub2.py
    
    • 文件夹应用程序在我的pythonpath上
    • 所有的初始化文件都是空的。
    • 共享库SUB2.SO是一个C++扩展模块,我使用CMASE和Boost Python编译。
    • test_sub2.py是sub2.so中定义的类的测试脚本。
    • 如果我从sub2目录运行test_sub2.py,它将正确导入模块,并通过测试。

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

    3 回复  |  直到 15 年前
        1
  •  2
  •   Thomas Wouters    15 年前

    导入它的方法是导入 app.sub2.sub2 ,来自任何源文件。你的测试应该在 app 并使用该模块路径到达扩展模块。

        2
  •  0
  •   Pavlo    15 年前

    尝试

    import .app.sub2.sub2 
    

    在mod1.py文件中

        3
  •  0
  •   AndiDog    15 年前

    使用相对导入:

    from ..sub2.sub2 import A
    

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