我的Xubuntu(Voyager)上安装了一个显然较旧的PyQt5版本。当我打印PYQT_VERSION_STR
时,会显示:'5.2.1'
。我在这里下载了最新的PyQt5发布表:http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.4/
我配置它,制作并安装它,一切都按计划进行。但是,如果我再次打印PYQT_VERSION_STR
,它仍会输出'5.2.1'
。
如何告诉我的python3.4使用更新版本?
(不应该重新安装新版本会覆盖另一个吗?我不明白为什么它仍然显示5.2.1作为版本字符串。)
编辑#1:
sys.path
:
['',' /home/user/.pythonbrew/lib' ;,' /usr/lib/python3.4',' / usr / lib / python3.4 / plat-x86_64-linux-gnu',' /usr/lib/python3.4/lib-dynload' ;,' / usr / local / lib / python3。 4 / dist-packages',' / usr / lib / python3 / dist-packages']
PyQt5.__file__
' / usr / lib中/ python3 / DIST-包/ PyQt5 /的初始化的.py'
所以看起来我的python正在使用存储库中的版本,除非它是安装时安装的地方。
编辑#2:
似乎PYQT_VERSION_STR
返回了Qt(!)的版本,PyQt5配置在制作和安装之前找到了。所以实际问题似乎是我的Qt5版本,根据PyQt5 5.2.1
的输出python configure
:
Querying qmake about your Qt installation...
Determining the details of your Qt installation...
This is the GPL version of PyQt 5.4 (licensed under the GNU General Public License) for Python 3.4.0 on linux.
Type 'L' to view the license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.
Do you accept the terms of the license? yes
Found the license file pyqt-gpl.sip.
Checking [...]
DBus v1 does not seem to be installed.
Qt v5.2.1 (Open Source) is being used.
The qmake executable is /usr/bin/qmake.
Qt is built as a shared library.
SIP 4.16.5 is being used.
The sip executable is /usr/bin/sip.
These PyQt5 modules will be built: QtCore, QtGui, QtNetwork, QtOpenGL,
QtPrintSupport, QtQml, QtQuick, QtSql, QtTest, QtWidgets, QtXml, QtDBus, _QOpenGLFunctions_2_0.
The PyQt5 Python package will be installed in /usr/lib/python3.4/site-packages.
PyQt5 is being built with generated docstrings.
PyQt5 is being built with 'protected' redefined as 'public'.
The Designer plugin will be installed in
/usr/lib/x86_64-linux-gnu/qt5/plugins/designer.
The qmlscene plugin will be installed in
/usr/lib/x86_64-linux-gnu/qt5/plugins/PyQt5.
The PyQt5 .sip files will be installed in /usr/share/sip/PyQt5.
pyuic5, pyrcc5 and pylupdate5 will be installed in /usr/bin.
The interpreter used by pyuic5 is /usr/bin/python3.
Generating the C++ source for the QtCore module...
Embedding sip flags...
Generating [...]
Re-writing
/home/xiaolong/Downloads/PyQt-gpl-5.4/examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir...
Generating the top-level .pro file...
Making the pyuic5 wrapper executable...
Generating the Makefiles...
所以PyQt5进入正确的目录,但Qt5的实际版本早于5.4。现在问题似乎转变为"如何更新我的Qt5版本?"除非我在这里误解了什么。
编辑#3:
sys.executable
的输出:
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'/usr/bin/python3'
>>>
编辑#4:
我的.bash_aliases
文件的内容:
alias python=python3
alias pip=pip3
答案 0 :(得分:1)
修改强>:
我一直认为在你的问题的初始评论中提出的建议对你来说不起作用,所以我猜想你的系统上必须安装第二个python。但是在再次阅读完所有内容之后,事实上你似乎没有贯彻所有给出的提示。
看起来这只是dist-packages
vs site-packages
的情况。在基于Debian的系统上,发行版提供的python包安装在dist-packages
中,而用户安装的包通常安装在site-packages
中。这样做是为了最大限度地减少破坏依赖于特定版本的python包的其他系统应用程序的可能性。
PyQt5配置脚本的输出显示您已将其安装到site-packages
:
The PyQt5 Python package will be installed in /usr/lib/python3.4/site-packages.
但是该目录没有出现在sys.path
中,因此python无法从该位置导入包。
有几种方法可以解决这个问题,但有些方法比其他方法“更安全”。例如,您可以通过各种方式操作python路径,但这会影响所有 python应用程序(包括使用python2的应用程序)的重大缺点,因此最好避免使用它。
由于可能很少有系统应用程序依赖于PyQt-5.2.1,因此可以简单地覆盖它。为此,请通过如下配置重新编译和安装PyQt-5.4:
python3 configure.py --destdir=/usr/local/lib/python3.4/dist-packages
或者,您可以卸载系统PyQt5软件包(使用apt-get
或其他),并通过以下配置完全替换它:
python3 configure.py --destdir=/usr/lib/python3/dist-packages
作为最后一步,您可以通过从PyQt5
删除冗余的/usr/lib/python3.4/site-packages
目录来整理一些内容。