导入PyQt4中的QtGui时出现图像未找到错误

1 投票
1 回答
1597 浏览
提问于 2025-04-16 18:26

我在Mac OS X 10.5上安装了ActivePython 2.7,主要是为了使用pypm这个包管理工具。不过,在安装了ActivePython并设置好我的.bash_profile文件以使用这个版本的Python后,我遇到了很多关于pypm安装的库的问题。为了安装这些模块,我只需要输入

pypm install <package-name>

这样我就安装了matplotlib、PyQt4、PIL等库。问题是,这些库看起来都安装得很顺利,它们把正确的.pth和.so文件放到了正确的site-packages文件夹里,基本的导入操作也没问题。但是我却遇到了以下错误。

首先,这是我在检查我机器上的Python时看到的内容:

new-host:site-packages ely$ which python
/usr/local/bin/python

new-host:site-packages ely$ ls -l /usr/local/bin/python
lrwxr-xr-x  1 root  wheel  60 May 25 22:15 /usr/local/bin/python -> /Library/Frameworks/Python.framework/Versions/2.7/bin/python

接下来,我启动Python并尝试导入一些东西。

new-host:site-packages ely$ python
ActivePython 2.7.1.4 (ActiveState Software Inc.) based on
Python 2.7.1 (r271:86832, Feb  7 2011, 11:33:10) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyQt4
>>> from PyQt4 import QtGui
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(PyQt4/QtGui.so, 2): Library not loaded: QtGui.framework/Versions/4/QtGui
Referenced from: /Users/ely/Library/Python/2.7/lib/python/site-packages/PyQt4/QtGui.so
Reason: image not found

从上面的情况来看,PyQt4可以顺利导入,没有任何问题,但当我尝试使用它的子模块时,却出现了“找不到图像”的错误。再举个例子,这是标准的matplotlib。

>>> import matplotlib
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "matplotlib/pyplot.py", line 23, in <module>
from matplotlib.figure import Figure, figaspect
File "matplotlib/figure.py", line 16, in <module>
import artist
File "matplotlib/artist.py", line 6, in <module>
from transforms import Bbox, IdentityTransform, TransformedBbox, TransformedPath
File "matplotlib/transforms.py", line 34, in <module>
from matplotlib._path import affine_transform
ImportError: dlopen(matplotlib/_path.so, 2): Symbol not found: __ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
Referenced from: /Users/ely/Library/Python/2.7/lib/python/site-packages/matplotlib/_path.so
Expected in: dynamic lookup

>>> from matplotlib import pyplot
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "matplotlib/pyplot.py", line 23, in <module>
from matplotlib.figure import Figure, figaspect
File "matplotlib/figure.py", line 16, in <module>
import artist
File "matplotlib/artist.py", line 6, in <module>
from transforms import Bbox, IdentityTransform, TransformedBbox, TransformedPath
File "matplotlib/transforms.py", line 34, in <module>
from matplotlib._path import affine_transform
ImportError: dlopen(matplotlib/_path.so, 2): Symbol not found: __ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
Referenced from: /Users/ely/Library/Python/2.7/lib/python/site-packages/matplotlib/_path.so
Expected in: dynamic lookup

有没有人知道为什么pypm安装的版本会这么麻烦?我在我的Ubuntu工作电脑上使用ActivePython和pypm已经很久了,从来没有遇到过这些问题。我用pypm安装的所有东西都运行得很好。为什么在Mac上会这么不同呢?

1 个回答

0

确保你的Python和Qt是相同的架构(32位或64位)。

对于matplotlib,可能是用来编译Python和matplotlib的g++版本不一样。

你有没有试过用系统自带的OSX Python?

撰写回答