2016-06-13 167 views
0

我试图导入共享对象到我的Python代码,像这样导入共享对象:麻烦在Python

import bz2 

,而我得到以下错误:

ImportError: ./bz2.so: cannot open shared object file: No such file or directory

使用小鬼模块,我可以验证Python实际上可以找到它:

>>> import imp 
>>> imp.find_module('bz2') 
(<open file 'bz2.so', mode 'rb' at 0xb6f085f8>, 'bz2.so', ('.so', 'rb', 3)) 

共享目标文件在我的PYTHONPATH中,并且m y LD_LIBRARY_PATH。

对于为什么我无法导入此共享对象的任何见解?谢谢!

回答

0

bz2.so是为python模块提供bzip功能(用C语言编写)的共享对象。在导入bz2时不直接导入它,而是实际导入一个名为bz2的python模块,然后使用.so文件。

这通常意味着您没有安装bzip库的开发版本,或者您没有安装pip安装程序的c编译器来为您构建。

你不会说你正在使用哪个linux,但一般模式是在包管理器中查找bzip2 dev或devel软件包并安装它们。

+0

即时通讯使用自定义版本的Linux,它没有预先安装bz2,并且没有包管理器来帮助获取它。我从源代码交叉编译它。 – RoboCop87

+0

只要导入一个使用它的python模块,我尝试编写一个导入dl模块并使用dl.open('bz2.so')的python模块,但那也不起作用。 – RoboCop87