Installing PyQt5 part3

麻烦不断,搞定一个又来一个。

安装完SIP,打开Visual Studio x64 Win64 Command Prompt (2010),切到PyQt5.0源码目录下,运行configure.py,本以为能顺利进行,结果如下图所示:

查了一下,说是PyQt源码不包含Qt部分,需要单独下载,qt-opensource-windows-x86-msvc2010-5.5.0.exe

下载完成后再次运行configure.py,依旧报上述错误,看来需要手动把C:\Qt\Qt5.5.0\5.5\msvc2010\bin到环境变量PATH里

又一次运行configure.py,好消息是不报上面的错误了,坏消息是报下面的错误:

照提示又加上--verbose参数运行了一次,得出详细错误信息

看来又是32位nmake和64位nmake的问题,64位不行果断启动32位 Visual Studio Command Prompt (2010)

运行configure.py,错误信息如下:

好你个老妖精,没完没了了。大意是说PyQt5的协议和Qt的协议不兼容。

来看PyQt5官网的License部分:

PyQt5 is dual licensed on all platforms under the Riverbank Commercial License and the GPL v3. Your PyQt5 license must be compatible with your Qt license. If you use the GPL version then your own code must also use a compatible license.

PyQt5, unlike Qt, is not available under the LGPL.

再引用别人的调查成果:

Qt 4.5中提供了三种授权协议,分别是GPL, LGPL和Commercial,可能很多人要问,为什么同样的一个产品要提供三种授权协议,什么情况下使用什么的样的授权协议最合适?在这里我就大致解释一下:

GPL全称是The GNU General Public License,是目前大多数的GNU程序和超过半数的自由软件使用的许可协议。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

回到LGPL,LGPL的全称是 GNU Lesser General Public License,GNU 较宽松公共许可证,也是由协议是由自由软体基金会发布的许可证,是一个主要为类库使用设计的开源协议,和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

除了GPL和LGPL两种开源协议之外,Qt还提供了Commercial商业协议,Qt的商业协议是由Nokia定义的,由Nokia和购买方签订的,具有法律效应的Qt产品授权协议。 Commercial License相教与GPL和LGPL,对于商业客户提供了更多的灵活性,客户可以任意的修改Qt的源代码,开发商业软件,而不需要公开任何源代码。并且,在Commercial License中,我们还提供了技术支持服务。当然,商业授权协议是需要费用的。

到底什么时候需要选择GPL和LGPL呢?一个最显而易见的理由就是他们都是免费的,使用LGPL和GPL版本的Qt是不需要支付任何费用的,当然我们也相应的不会提供技术支持。如果你打算开发真正的开源软件,并希望使用者也可以保持开源,那么GPL是更好的选择,因为所有人,不论你自己还是将来基于你的代码进行再次开发都必须开源。如果你打算开发闭源(不开放源代码)的商业软件,那么LGPL则更适合,但必须满足下面两个条件:
1. 你的应用程序应该动态链接Qt函数库,并使你的应用程序与未做修改的LGPL库分开发布。同时必须确保使用者(接受者)知道应用程序使用了LGPL版本的Qt;
2. 如果你对LGPL版本的Qt进行了任何修改,并发布,则必须遵循LGPL 条款发布。任何使用者有权利得到这些修改(通常情况下是源代码),并且确保使用者可以通过这些修改自己生成相应你修改过的Qt版本。

相信到这里大家已经对Qt提供的这三种协议有了基本的了解,通常大家还会有一个疑问,就是基于这三种授权协议的Qt产品到底由多少功能上的区别,是不是商业版本的会更完整,性能更好一些?这里我可以负责任的说:99%的代码都是一样的,无论是GPL, LGPL还是Commercial,功能,性能都没有区别,唯一的区别就在于授权协议的不同。

还有一点需要说明的就是,由于LGPL是在Qt4.5这个版本里面才引入的,所以之前的Qt版本,4.4或者3.x的版本,并不提供LGPL协议,是不可逆的。同时未来发布的Qt版本,就一直会提供三种不同的授权协议版本。

PyQt采用的是GPL,Qt要与其兼容就必须采用GPL(当然二者都有商业版,不过屌丝宅男买不起,不考虑了。),意思就是哥前面下的Qt协议是LGPL的,还得重下GPL的。

不过有个疑问就是我压根没在Qt页面看到哪里区分GPL和LGPL以及商业版,难道这又是一个大坑?算了,今天先到这吧,不早了也,明天接着搞。

最后总结一下安装顺序吧

1.python3.4

2.SIP

3.Qt5.5.0

4.PyQt5.0

时间: 2024-10-21 10:52:47

Installing PyQt5 part3的相关文章

Installing PyQt5

PyQt5官网的安装说明SIP must be installed before building and using PyQt5. 也就是说在build和使用PyQt5之前,是需要安装SIP的 下载的SIP是python源码,根据官方说明,SIP是需要自己先build再install的,其中configure.py则是配置文件 Linux平台下是先运行configure.py,在make,然后make install windows平台下应该是用nmake替代make命令 不同平台不同编译器下

Installing PyQt5 part2

好吧,我承认昨晚就是一顿瞎折腾.本以为今天还得再折腾但也够呛能装上SIP,然后就不了了之了,真心没想到so easy. 先说一下我的安装环境,win7 x64 + visual studio 2010 + python 3.4 x64 这个环境下安装SIP就是下面三步: configure.pynmakenmake install 不过需要注意的是,这里的nmake需要用64位的.但是也不需要像part1里面那样设置一堆环境变量,什么PATH,什么LIB,什么INCLUDE,通通不需要 唯一需要

spark机器学习-第3章

1.安装工具ipython https://www.continuum.io/downloads 选择自己需要的版本 2.安装过程 (1)赋权限 chmod u+x ./Anaconda2-4.2.0-Linux-x86_64.sh (2)回车 [[email protected] tool]# ./Anaconda2-4.2.0-Linux-x86_64.sh Welcome to Anaconda2 4.2.0 (by Continuum Analytics, Inc.) In order

PyQt5教程——组件 Ⅱ(八)

这部分的教程将会继续介绍PyQt5的组件.我们这节教程的内容将包括像素图(QPixmap),单行文本框(QLineEdit)和下拉列表框(QComboBox) 像素图(QPixmap) 像素图(QPixmap)是各种用于处理图像的组件中的一个.它是在屏幕上显示图片的最佳选择.在我们代码例子中,我们将使用像素图来在窗口上显示一个图片. #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In

pyqt5加载网路图片,不本地下载。

依赖组件: requests class webImg: pass if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import (QWidget, QLabel, QVBoxLayout) from PyQt5.QtGui import QPixmap app = QApplication(sys.argv) import requests u

python3.5 + PyQt5 +Eric6 实现的一个计算器

目前可以实现简单的计算.计算前请重置,设计的时候默认数字是0,学了半天就做出来个这么个结果,bug不少. python3.5 + PyQt5 +Eric6 在windows7 32位系统可以完美运行 计算器,简单学了半天就画个图实现的存在bug,部分按钮还未实现,后续优化. 代码结构如图: 1 jisuan.py 2 import re 3 #匹配整数或小数的乘除法,包括了开头存在减号的情况 4 mul_div=re.compile("(-?\d+)(\.\d+)?(\*|/)(-?\d+)(\

使用PyQt5编写一个简单的GUI程序

我做Python窗口界面编程时,经常使用PyQt进行设计.这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程 PyQt的简介以及开发环境的搭建在此不多赘述. 1.       打开Qt Designer,新建一个Dialog Without Buttons 2.       从左侧的Widget Box拖入一个Label,一个Text和一个Button 3.       双击控件可以改变其上的文本 4.       保存文件,命名为test.ui 5.       使用pyuic5将.u

PyQt5教程——布局管理(4)

PyQt5中的布局管理 布局管理是GUI编程中的一个重要方面.布局管理是一种如何在应用窗口上防止组件的一种方法.我们可以通过两种基础方式来管理布局.我们可以使用绝对定位和布局类. 绝对定位 程序指定了组件的位置并且每个组件的大小用像素作为单位来丈量.当你使用了绝对定位,我们需要知道下面的几点限制: 如果我们改变了窗口大小,组件的位置和大小并不会发生改变. 在不同平台上,应用的外观可能不同 改变我们应用中的字体的话可能会把应用弄得一团糟. 如果我们决定改变我们的布局,我们必须完全重写我们的布局,这

PyQt5 笔记(02):嵌套布局

如前一篇笔记,我们还是只讨论两层嵌套布局的情况. 前面的布局有一个缺点:有三个内层布局,则需要三个空部件.那若有十个内层布局呢?显然会让人不舒服. 刚才在玩 Qt Designer 时,发现了一个更好的办法,不管有多少个内层布局,只需要一个空部件. 一.过程分析: 1. 先准备一个全局部件,用于"承载"全局布局 # 全局部件(注意参数 self),用于"承载"全局布局 wwg = QWidget(self) 2. 再定义全局布局 wl = QVBoxLayout(w