将共享对象作为模块导入失败

Importing a shared object as a module fails

我想创建一个具有以下结构的包:

file.py
package_name/
package_name/__init__.py
package_name/module_a.py
package_name/module_b.so

module_a 使用 module_b 并且效果很好。但是,如果我尝试从 file.py 加载包 package_name 或包含模块 module_a,则会发生错误,无法找到 module_b

我做错了什么?

您的 LD_LIBRARY_PATH 包含 .,这是当前工作目录。直接调用module_a是它所在的目录,调用file.pyfile.py的目录,找不到库。您有多种选择来更改它。

  • 改变你的LD_LIBRARY_PATH环境。这可以在你的 .bashrc 中,在调用你的 python 文件的 shell 脚本中完成,方法是在调用前加上 LD_LIBRARY_PATH=/your/path 前缀或修改 Python 中的 os.environ .
  • 您还可以将库符号链接到其他文件夹。
  • 您可以将库安装到系统范围的库文件夹中。