我通过“”从svn#95安装了内存分析器。
它看起来安装得很好。
yey@yey:/usr/local/lib/python2.7/dist-packages/guppy/heapy$ ls *.so *.py
AbstractAlgebra.py ImpSet.py Path.py Remote.py Use.py
Classifiers.py __init__.py pbhelp.py RM.py View.py
Console.py Monitor.py Prof.py Spec.py
Doc.py OutputHandling.py RefPat.py Target.py
heapyc.so Part.py RemoteConstants.py UniSet.py但我还是不能进口。古皮的Python源代码做了这个导入,所以它应该会成功。
>>> import guppy.heapy
>>> import guppy.heapy.heapyc
# trying /usr/local/lib/python2.7/dist-packages/guppy/heapy/heapyc.so
# trying /usr/local/lib/python2.7/dist-packages/guppy/heapy/heapycmodule.so
# trying /usr/local/lib/python2.7/dist-packages/guppy/heapy/heapyc.py
# trying /usr/local/lib/python2.7/dist-packages/guppy/heapy/heapyc.pyc
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named heapyc我的问题是,Python显然尝试将文件导入到正确的位置。为什么失败了?是因为.so文件损坏了吗?还是我的ld.so.cache坏了?谢谢!
发布于 2013-09-30 18:37:10
.so文件可能存在许多问题,可能导致这种情况--没有读取访问、损坏的文件、空文件、完全有效的库,但是对于错误的平台/体系结构,等等。更糟糕的是,.so本身可能很好,但它可能对存在上述任何问题的不同文件具有加载时间依赖性。
不幸的是,Python2.x导入程序没有告诉您实际遇到了哪个问题;您所能知道的是,由于某种原因,打开共享库的调用失败了。
值得注意的是,在3.1或更高版本中,您可能会得到一条更有用的错误消息,如下所示:
ImportError: dlopen(/usr/local/lib/python3.3/dist-packages/guppy/heapy/heapyc.so, 2): no suitable image found. Did find:
/usr/local/lib/python3.3/dist-packages/guppy/heapy/heapyc.so: Permission denied然而,这是可能的,因为进口商从零开始重写为3.1,而这种根本的改变是不可能被支持到2.7。
大多数平台都提供了测试共享库的工具,这确实是诊断问题的最佳方法。
但是对于一个简单且独立于平台的测试,您只需使用Python本身附带的ctypes库:
>>> import ctypes
>>> ctypes.CDLL('/usr/local/lib/python2.7/dist-packages/guppy/heapy/heapyc.so')您应该得到一个错误,如下所示:
OSError: /usr/local/lib/python2.7/dist-packages/guppy/heapy/heapyc.so: cannot open shared object file: Permission denied在这种情况下,文件是不可读的(或者,在需要共享库才能执行的平台上,它要么是不可读的,要么是不可执行的),这应该足以解决这个问题。因此,chmod a+r应该修复它(尽管您可能想进一步了解它为什么一开始就无法读懂)。
如果错误没有告诉你自己修复它,并且搜索没有帮助,那么至少你可以这样问一个问题,这个问题更有可能得到一个即时的答案--…
https://stackoverflow.com/questions/19015170
复制相似问题