我在 / tmp / yifli 下手动安装了PyQt-4.9.1和sip-4.13.2,因为当前安装在计算机上的程序(运行Fedora 13)对于我的软件而言太旧了。
之后,我将他们的位置添加到$ PYTHONPATH,这是sys.path的输出:
>>> import sys
>>> print sys.path
['', '/tmp/yifli/lib/python/site-packages', '/tmp/yifli/lib/python/site-packages/PyQt4', '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/Numeric', '/usr/lib/python2.6/site-packages/PIL', '/usr/lib/python2.6/site-packages/gst-0.10', '/usr/lib/python2.6/site-packages/gtk-2.0', '/usr/lib/python2.6/site-packages/scim-0.1', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info', '/usr/lib/python2.6/site-packages/webkit-1.0']
然而,我得到的错误是由于旧的PyQt4仍然被使用的事实:
>>> import sip
>>> sip.__file__
'/tmp/yifli/lib/python/site-packages/sip.so'
>>> import PyQt4
>>> PyQt4.__file__
'/usr/lib/python2.6/site-packages/PyQt4/__init__.pyc'
怎么回事?
P.S。,我在编译Qt时遇到错误,抱怨Qt Phonon模块的某些头文件无法找到。但由于我不使用该模块,我只是忽略了它。
翼飞
答案 0 :(得分:1)
首先,在/tmp
中安装内容并不是一个好主意,因为它仅适用于临时文件(大多数系统都会设置为删除/tmp
中的所有内容在启动或关机过程中)。
其次,您应该从不尝试修改您的系统python或其任何软件包 - 这几乎肯定会导致依赖于python的其他应用程序的破坏。如果您需要不同版本的python和/或其软件包,请在/usr/local
下创建一个完全独立的安装。
有了这个,只需要确保在为它编译包时指定新的python。
所以,要编译Sip,你会这样做:
/usr/local/bin/python sip_source/configure.py
对于PyQt4,您也可以这样做 - 但还要添加一些其他选项,以避免覆盖系统文件:
/usr/local/bin/python pyqt4_source/configure.py \
--qsci-api-destdir /usr/local/lib/qt4/qsci --no-designer-plugin
设置完成后,您可以创建一个简单的包装脚本来运行需要升级的python的应用程序:
#!/bin/sh
exec /usr/local/bin/python myapp.py "$@"
请注意,您无需更改$PYTHONPATH
即可使其中任何一项正常工作,因此您应撤消对其所做的任何更改。 (你可能还想考虑重新安装fedora sip和pyqt软件包,以确保一切都按原样放回。)
关于Phonon的错误,解决方案很简单:如果缺少头文件,请安装包含它们的fedora包。