订阅趣无尽微信公众号

树莓派上安装配置Python+PyQt+Eric教程

本文是一篇在树莓派上安装运行Python3.5.3 + PyQt 5.8.2 + Eric 6.1.11(配套Sip_4.19.2,QScintilla_2.10)的过程教程。来自 zhaoker 的投稿,感谢~

对于一个完美主义和理想主义者来说,一个产品到手,总想把它发挥到极致,树莓派pi2和pi3都在手玩了很久,没发挥啥作用,最近突发奇想要在上面搞编程,对于Raspberry Pi3 来说,直接接个显示器在上面打代码跑跑小项目,性能是足够的,包括这篇文章也全部是在这上面完成,设备入门使用问题就不说了,百度上一堆可以查询,如果apt安装pyqt,默认只有pyqt5.3.2,配合python3.4.2版本有些旧。
写python代码,IDLE默认的太简单了,没有代码提升,本来想用pycharm2.17的,但是,它的index字典索引,每次扫描到pyqt 中Qtgui 就会卡住,然后整个python就呈死机状态。而sublime不熟悉,貌似没有相关资料,只能考虑eric6了。

这里主要说说,在树莓派上安装运行Python3.5.3 + QyPt 5.8.2 + Eric 6.1.11 (配套Sip_4.19.2,QScintilla_2.10)的过程,原系统pyhon2 .7和 python 3.4 保持不变。python3.5安装到新的目录,全程都是编译,很累,折腾了三天,很多大坑。
这里面要注意版本之间的配套,不清楚配套关系的可以看看版本的发布时间,基本在同一天就对了,之前就遇到过sip版本不对造成的c++错误。相关下载可以在:https://www.riverbankcomputing.com/news 上找到。

如果pi用的是64位linux系统,这些过程会很简单,像sip,pyqt,qscintilla可以直接用pip install 搞定最新版,就不用这么麻烦了。去年suse发布了64位的pi3但是貌似没有桌面,而且只能用一年,后期不知道如何,国外有大神安装了debian9的64位版本到pi上面,但是bug很多,这里也不好弄,既然pi4的发布日期没定年内不会推出,在pi3性能够用的情况下,树莓派官方应该在系统上下功夫,对兼容性,性能做一些有力的升级,网上有高手已经测试了64位在pi上的性能,运算居然比32位的快4倍,很是期待。
我当前系统是官方的基于Debian8的 Jesscia 2017.4.10 版本,以下过程建议直接输入su,输入密码后在root模式下运行,方便,全程不再sudo,容易忘记。

1、安装python3.5.3

参考:http://www.cnblogs.com/infopi/p/update_python_raspbian.html
下面开始编译安装:
先安装一些依赖,有些已经存在,不影响。

apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev libssl-dev openssl libgdbm-dev liblzma-dev libreadline-dev libncursesw5-dev
wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz
tar zxvf Python-3.4.3.tgz
cd ./Python-3.5.3
./configure --prefix=/opt/python3.4
make 估计会提示错误,根据错误百度一下,安装一些依赖包
make 第二次一般就没问题了
make install

创建软链接。创建之后,打python35就能启动python 3.5.3了
这里不建议更换原来的python3,我这里新建了python35用来指向
创建/usr/bin/python35这个软链接指向python 3.5.3,我这里创建新终端来操作:

sudo ln -s /opt/python3.5/bin/python3.5 /usr/local/bin/python35
sudo ln -s /opt/python3.5/bin/pip3.5 /usr/local/bin/pip35

第三行创建一个pip的软链接。pip已经被官方集成到python3.5里,用它安装pypi上的第三方模块很方便。

我们可以用pip35 -V 可以看版本,pip list 可以看到已安装的模块,目前应该是空的了,这里建议把pip升级到最新的9.0.1版本pip35 install pip –upgrade(升级完成后pip list会有警告提示,新建个pip.conf写入些配置解决,自行百度即可) 把原系统 python3.4的模块在/usr/lib/python3/dist-packages 下的pip35的程序可以引用:
在/opt/python3.5/lib/python3.5/site-packages 目录下新建一个 sys.path 文件
在里面这接写上 /usr/lib/python3/dist-packages 回车保存即可,以后很多这样的操作建议直接开个终端,输入 sudo pcmanfm 以root方式打开文件管理操作,会很方便,系统了win下的操作,少用一些命令,免得太累。

2、安装SIP

进入su模式
参考:http://www.iloveandroid.net/2015/10/06/setPyqtEnvironment/

wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.2/sip-4.19.2.tar.gz

然后 apt-get install python3-dev libpython3-dev 解压进入目录后

python35 ./configure.py 
make
make install

成功后 sip-V 如果哦没有,则用了ln建立个软链接到/opt/python3.5/bin/sip
输入python35看sip版本:

python35
>import sip  
>print(sip.SIP_VERSION_STR)

正常两个都显示 4.19.2

3、安装pyqt5.8.2

这里安装 pyth5.8.2时候一定要安装QtSvg,之前没有安装成功,导致思考了很久耽误了很久,安装之前可以先装官方的qt creator5.3.2
参考:http://blog.csdn.net/coekjin/article/details/52049273
一些基础环境就附带装上了,一个命令搞定:

sudo apt-get install qt5-default  qt-sdk qtcreator

安装后,由于Qt Creator不能自动识别树莓派上的工具链,因此需要手动添加。点击Tools -> Options打开配置对话框,在Build & Run -中先添加gcc对应/usr/bin/gcc,Debugger可设置为/usr/bin/gdb , Kits选项卡中点击Add。Compiler设置为刚刚的gcc /usr/bin/gcc,Debugger可设置为刚刚的的gdb /usr/bin/gdb,Devices type选择默认的Desktop,Device选择local,Qt version选择/usr/bin/qmake。如果没装QtSvg软件运行会有警告。
下载5.8版本,解压缩后进入目录。

wget https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.8.2/PyQt5_gpl-5.8.2.tar.gz

正常编译安装即可:

python35 ./configure.py 
make
make install

如果这里sip版本不配套,就会出现 从C++ mode 错误之类

4、安装QScintilla2

解压缩后进入目录:
(1)安装本体:

cd Qt4Qt5
qmake  qscintilla.pro

完成这步后,修改MAKEFILE 文件,在CFLAGS 和 CXXFLAGS 后面 加上 -std=c++11 否则make会提示出错。

CFLAGS  = -pipe -O2 -fvisibility=hidden -D_REENTRANT -w -fPIC $(DEFINES) -std=c++11
CXXFLAGS  = -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -w -fPIC $(DEFINES)   -std=c++11

之后编译

make 
make install

这里configure.py 要看提示,是否会安装,QtSvg 模块,如果没有,则要

apt-get install libqt5svg5 python3-pyqt5.qtsvg qtsvg5-doc

他检测的过程其实挺简单,就是在目录下生成cfgtest_QtXXXXXSupport.cpp文件,然后编译看能否生成执行文件,如果不能安装,就不安装该模块,其实我之前没安装qtsvg,后面单独再补安装的,就是修改了configure.py,查找 def check_module

修改如下:

def check_module(target_config, disabled_modules, verbose, mname, incfile, test):
    """ See if a module can be built and, if so, add it to the target
    ……………………
    the test.
    """
    if mname=="QtSvg":
        print("========= force add QtSvg module ========")
        target_config.pyqt_modules.append(mname)
    else:
        if mname in disabled_modules:
       return
    # Check the module's main .sip file exists.

Pyhton35 configure.py 就会在目录中生成Qtsvg文件夹,进文件夹,

qmake QtSvg.pro
make
make install#这样单独安装也是可以的。

(2)安装designer :

cd designer-Qt4Qt5  
qmake designer.   
make  
make install

(3)安装Python bingdings:

cd Python 
python3 configure.py --pyqt=PyQt5  
make 
make install

5、安装eric6-6.1.11

下载两个包
https://sourceforge.net/projects/eric-ide/files/eric6/stable/6.1.11/eric6-6.1.11.tar.gz
https://sourceforge.net/projects/eric-ide/files/eric6/stable/6.1.11/eric6-i18n-zh_CN-6.1.11.tar.gz
解压到同一个目录,进入目录,直接运行

sduo  python35  ./install.py

有说要安装中文包,我一安装就是中文,没有继续装install-i18n.py了,如果不是中文就自己再装下。
进入后设置下API,手工编译下,新建项目就会有提示了。

后记:整个过程持续了4天,回头再写难免会有下许多差错,大概思路没变,可能个别依赖包漏了,不过我反正按照油多不坏菜的原则,要装的都装,用apt-get qt5* 类似之类的看看需要装的包,有疑问可以留言。

本文来自:树莓派实验室
链接地址:http://shumeipai.nxez.com/2017/05/03/raspberry-pi-install-python-pyqt-eric-tutorial.html

4 Responses

  1. 后羿 2017年5月19日 / 12:28

    好文章,顶一个!

  2. dd 2017年5月21日 / 15:34

    牛掰!顶一个!

  3. hai 2017年10月19日 / 17:45

    在安装QScintilla2的 “(2)安装designer” 那出错了,搞不懂为什么:
    输入命令:qmake designer.pro
    报错:Project ERROR: Unknown module(s) in QT: designer

  4. ddddd 2017年10月21日 / 22:11

    不知为啥安装QScintilla2后print(sip.SIP_VERSION_STR)的版本竟然变低了,树莓派最新固件,原来python就是3.5。3的所以没重装,安装到SIP那一步是反复sip -V 和import sip print(sip.SIP_VERSION_STR)确认了版本同样,是19的,但如上述所说,在最后安装QScintilla2这里在此确认是却变成18.1的了,好奇怪。反复安装了几次到一样,其他前面都没报多少错,虽然eric安装不成,不过从PC上复制pyqt的程序到pi上还是可以运行,诸位有遇到类似的状况吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注