无法在python中导入模块:PyQt4与SIP冲突

时间:2014-03-21 20:56:02

标签: python pyqt virtualenv archlinux python-sip

我是新人,我的英语不是很好,但我在这里: 我在PC上安装了最新的Arch Linux,昨天我尝试安装SIP,这是一个用于包装C ++代码的Python代码生成器。 我试图在虚拟环境下安装SIP和PyQt4。 我从AUR获得SIP,并以这种方式安装:

http://lucacerone.net/2013/08/installing-pyqt4-and-sip-in-a-virtual-environment-ubuntu-1204/#.Uyx-dGd_phF/

我是这样做的,因为在官方的SIP文档网站上,我没有找到安装位置和目录。文档对我来说并不清楚。我现在知道了,这是一个非常愚蠢的想法,因为当我尝试使用:

运行pyhton脚本时
python file.py

我收到错误是因为我使用的是Python 3.3.4:

[vain@chinchi2 python_programme]$ python test.py
Traceback (most recent call last):
  File "test.py", line 25, in <module>
    import matplotlib.pyplot as plt
  File "/usr/lib/python3.3/site-packages/matplotlib/pyplot.py", line 98, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/usr/lib/python3.3/site-packages/matplotlib/backends/__init__.py", line 28, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/usr/lib/python3.3/site-packages/matplotlib/backends/backend_qt4agg.py", line 13, in <module>
    from .backend_qt4 import QtCore, QtGui, FigureManagerQT, FigureCanvasQT,\
  File "/usr/lib/python3.3/site-packages/matplotlib/backends/backend_qt4.py", line 21, in <module>
    import matplotlib.backends.qt4_editor.figureoptions as figureoptions
  File "/usr/lib/python3.3/site-packages/matplotlib/backends/qt4_editor/figureoptions.py", line 13, in <module>
    import matplotlib.backends.qt4_editor.formlayout as formlayout
  File "/usr/lib/python3.3/site-packages/matplotlib/backends/qt4_editor/formlayout.py", line 51, in <module>
    from matplotlib.backends.qt4_compat import QtGui,QtCore
  File "/usr/lib/python3.3/site-packages/matplotlib/backends/qt4_compat.py", line 56, in <module>
    from PyQt4 import QtCore, QtGui
RuntimeError: the sip module implements API v11.0 but the PyQt4.QtCore module requires API v10.1

我到底应该改变什么?我也尝试过:

sudo pacman -S pyqt5-common 5.2-1 [installed]

(python-pyqt5和python2-pyqt5之间共享的公共PyQt文件)和:

pacman -Sy python-qscintilla-common

也许存在错误的库依赖,我该如何解决?


喔, 我想安装PyQt5但是我遇到了同样的问题,我做了同样的错误: python configure.py make sudo make install

full/virtualenv/path/build/SIP/sip-4.15.5/ 我又遇到了同样的错误:

from PyQt4 import QtCore, QtGui RuntimeError: the sip module implements API v11.0 but the PyQt4.QtCore module requires API v10.1 [vain@chinchi2 python_programme]$ python2 erstenprog.py Traceback (most recent call last): File "erstenprog.py", line 26, in <module> import matplotlib.pyplot as plt ImportError: No module named matplotlib.pyplot

我非常沮丧,因为我用英语和德语写到了linux论坛,我只是解压缩它没有答案。

我怎么会这样? 我应该遵循这里的建议: http://lucacerone.net/2013/08/installing-pyqt4-and-sip-in-a-virtual-environment-ubuntu-1204/#.Uyx-dGd_phF/

Shoul我将PyQt5集成在:

full/virtualenv/path/build/PyQT5

因为它已经存在于

lib/python3.3/site-packages/PyQt5

2 个答案:

答案 0 :(得分:2)

如果您是Arch Linux的新用户并且不知道自己在做什么:请不要手动安装这些软件包!

如果某些软件包没有得到官方支持,您可以依赖[core]/[community]软件包,也可以依赖AUR。

首先:你为什么要在virtualenv中安装这些?你真的需要一个virtualenv你计划做什么?此外,当您使用Arch Linux时,不要盲目地遵循Ubuntu教程,因为这些通常不适合... Ubuntu用户需要亲自动手才能获得其软件的最新功能。不是Arch用户(获胜的滚动版本)。

第二:出现以下错误

  

RuntimeError:sip模块实现API v11.0,但PyQt4.QtCore模块需要API v10.1

表示在上次SIP更新后未重新编译PyQt4.QtCore。只需重新编译包就可以解决问题。请注意,如果您使用官方Arch软件包,则不会发生此类错误。

所以,如果你想在Arch Linux上用Python 3安装PyQt5,首先删除你在virtualenv中所做的任何事情以防止冲突,然后:

sudo pacman -S python-pyqt5 sip

之后,运行python file.py将使用官方正确安装的软件包调用Python 3。

答案 1 :(得分:-1)

您是否尝试安装PyQt4或PyQt5?

正如您所指的那样

sudo pacman -S pyqt5-common 5.2-1 [installed]

并尝试导入PyQt4:

from PyQt4 import QtCore, QtGui

显然我们面临同样的错误:PyQt5 - SIP API 10 level error. API 11 required

您能否提供您的PyQt5目录内容?只是为了与我的比较。

我认为这是一个错误,因为在PyQt5安装中需要sip-4.5.15以及最新版本。

...或者PyQt5使用另一个sip,但我无法找到有关此类配置的任何信息。

此外,我无法在网上找到有关sip包及其相应API级别的信息。

我在这里记录安装失败和分析进度: http://www.hznteam.fr:5000/trac-bubble/ticket/102

因为我在等待更多信息。