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

时间:2015-04-22 10:26:38

标签: python python-import

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

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的LD_LIBRARY_PATH包含.,这是当前的工作目录。如果你直接打电话给module_a,那就是它所在的目录,如果你打电话给file.py它的file.py目录,那么就找不到那个库。您可以通过多种方式进行更改。

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