Can't import modules in python: PyQt4 conflicts with SIP

给你一囗甜甜゛ 提交于 2019-12-13 00:37:42

问题


I'm new and my english is not very well, but here I go: I have the newest Arch Linux on my PC and yesterday I tried to install SIP, a Python code generator for wrapping C++ codes. I tried to install SIP and PyQt4 under a virtual enviroment. I got SIP from the AUR, and installed it this way:

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

I did it this way because on the official SIP-documentation website I didn't figure out where to install it and in which directory. The documentation was not clear for me. I know now, that was a very stupid idea because when I try to run a pyhton script with:

python file.py

I got errors because I'm using 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

What exactly should I change? I also tried:

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

(Common PyQt files shared between python-pyqt5 and python2-pyqt5) and:

pacman -Sy python-qscintilla-common

Maybe there exists a false library dependency, how can I solve this?


Oh, I want to install PyQt5 but I got the same problem, the same error after I did: python configure.py make sudo make install in the

full/virtualenv/path/build/SIP/sip-4.15.5/ I got the same errors again:

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

I'm so frustraded, because I wrote to arch linux forum in english and german, I got no answer only to deinstalled it.

How I'm supposed to this? I just should follow the advice here: http://lucacerone.net/2013/08/installing-pyqt4-and-sip-in-a-virtual-environment-ubuntu-1204/#.Uyx-dGd_phF/

Shoul I integrate PyQt5 in the:

full/virtualenv/path/build/PyQT5

because it already exists in

lib/python3.3/site-packages/PyQt5.


回答1:


If you're new to Arch Linux and don't really know what you're doing: do not install these packages manually!

You can rely on [core]/[community] packages, and on the AUR if some packages are not officially supported.

First: why do you want to install these in a virtualenv? Do you really need a virtualenv for what you plan on doing? Also, do not blindly follow Ubuntu tutorials when you are on Arch Linux, since these are usually not adapted... Ubuntu users will need to get their hands dirty to get the latest features for their software. Not Arch users (rolling release for the win).

Second: the following error

RuntimeError: the sip module implements API v11.0 but the PyQt4.QtCore module requires API v10.1

means that PyQt4.QtCore was not recompiled after the last SIP update. Simply recompiling the package solves the issue. Note that this kind of errors will not happen if you use the official Arch packages.

So, if you want to install PyQt5 with Python 3 on Arch Linux, first remove whatever you did in your virtualenv to prevent clashes, and then:

sudo pacman -S python-pyqt5 sip

After that, running python file.py will call Python 3 with the official properly-installed packages.




回答2:


Are you trying to install PyQt4 or PyQt5?

As you refer to

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

and try to import PyQt4:

from PyQt4 import QtCore, QtGui

Obviously we are facing the same error: PyQt5 - SIP API 10 level error. API 11 required

Could you please provide your PyQt5 directory content? Just to compare with mine.

I think it's a bug as in the PyQt5 install sip-4.5.15 is required and the latest version available.

... Or PyQt5 uses another sip, but I can't find out any information on such a configuration.

Moreover, I can't find out information regarding the sip packages and their corresponding API level on the web.

I log the installation failures and analysis progress here: http://www.hznteam.fr:5000/trac-bubble/ticket/102

as you I'm waiting for more information.



来源:https://stackoverflow.com/questions/22569388/cant-import-modules-in-python-pyqt4-conflicts-with-sip

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!