本文是一篇在树莓派上安装运行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* 类似之类的看看需要装的包,有疑问可以留言。