2

我在/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'

怎么来的?

PS,我在编译 Qt 时确实遇到了错误,它抱怨找不到 Qt Phonon 模块的一些头文件。但由于我不使用该模块,我只是忽略了它。

逸飞

4

1 回答 1

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 包。

于 2012-02-18T00:03:56.550 回答