将共享对象作为模块导入失败
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.py
是file.py
的目录,找不到库。您有多种选择来更改它。
- 改变你的
LD_LIBRARY_PATH
环境。这可以在你的 .bashrc 中,在调用你的 python 文件的 shell 脚本中完成,方法是在调用前加上 LD_LIBRARY_PATH=/your/path
前缀或修改 Python 中的 os.environ
.
- 您还可以将库符号链接到其他文件夹。
- 您可以将库安装到系统范围的库文件夹中。
我想创建一个具有以下结构的包:
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.py
是file.py
的目录,找不到库。您有多种选择来更改它。
- 改变你的
LD_LIBRARY_PATH
环境。这可以在你的 .bashrc 中,在调用你的 python 文件的 shell 脚本中完成,方法是在调用前加上LD_LIBRARY_PATH=/your/path
前缀或修改 Python 中的os.environ
. - 您还可以将库符号链接到其他文件夹。
- 您可以将库安装到系统范围的库文件夹中。