RuntimeError: модуль sip реализует API v8.0 до v8.1, но модуль PyQt4.QtCore требует API v7.1 - PullRequest
2 голосов
/ 17 февраля 2012

Я вручную установил PyQt-4.9.1 и sip-4.13.2 в / tmp / yifli , потому что те, которые в настоящее время установлены на машине (с 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. Но так как я не использую этот модуль, я просто проигнорировал его.

Ифэй

1 Ответ

1 голос
/ 18 февраля 2012

Во-первых, установка вещей в /tmp не очень хорошая идея, поскольку она предназначена только для временных файлов (большинство систем будет настроено на удаление всего в /tmp во время загрузки или завершения работыprocess).

Во-вторых, вам следует НИКОГДА не пытаться изменить системный 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

После того, как это будет настроено, вы можете создать простой скрипт-обертку для запуска приложений, которым требуется обновленный питон:

#!/bin/sh
exec /usr/local/bin/python myapp.py "$@"

Обратите внимание, что выне нужно менять $PYTHONPATH для того, чтобы все это работало, и поэтому вам следует отменить любые изменения, которые вы внесли в него.(И вы также можете подумать о переустановке пакетов Fedora sip и pyqt, чтобы все вернулось на свое место).

Что касается ошибок, связанных с Phonon, решение простое: если заголовокфайлы отсутствуют, установите пакет fedora, который их содержит.

...