• 在树莓派(Raspberry Pi)上编译安装更新版本的Python


    Raspiban Wheezy上预装的Python3版本是3.2.3,本文将介绍升级到3.4.3的方法。

    此文也适用于安装其它版本(比如最新版本)的Python,只要下载时选择特定版本可以了。

    我用的是B+型的树莓派,系统是2014-06-20发布的Raspbian Wheezy。

    此文也适用于其它Debian系的linux系统(比如Ubuntu)。

    先把整个raspbian系统升级到最新。

    这一步不是必须的,可能用时较长,完成后可能需要重启。

    sudo apt-get update
    s
    udo apt-get upgrade
    sudo apt-get dist-upgrade

    我们就在当前用户的home目录下进行吧,进到此目录

    cd ~

    安装python 3.4需要的依赖。有些东西可能已经存在了,会自动忽略。

    sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev

    这样编译出来的Python 3.4仍会缺少tkinter模块(用于GUI图形用户界面编程),在树莓派上可能用不到这个模块,所以刻意不编译它。

    如果想使用tkinter,或想编译一个完整的Python,在这里加上tk tk-dev tcl tcl-dev这几个依赖包即可。

    下载Python源码、解压。

    第1行的命令,从Python官网下载3.4.3版的源码。

    第2行的命令,把源码解压到当前目录下的Python-3.4.3目录里。

    wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
    tar zxvf Python-3.4.3.tgz

    配置、编译、安装。如果顺利的话,在树莓派B+用时1小时20分钟左右,编译后源码的目录会膨胀到130 MB。

    第2行后面的参数表示,我们要把新版Python安装到/opt/python3.4目录下。

    在make命令后再执行一次make命令(会运行极短时间),既可看到仍有哪些Python模块无法编译,然后排查原因(通常是没安装相应的依赖包)。

    cd ./Python-3.4.3
    ./configure --prefix=/opt/python3.4
    make
    make

    sudo make install

    可以给./configure后面加上优化选项,如下是打开LTO优化:

    ./configure --prefix=/opt/python3.5 --with-lto

    推荐打开这个选项,这个选项在Python 3.5及以上版本才有。

    (还有关于GPO的优化选项,一般在树莓派上用不到GPO优化,这里就不说了,需要请查阅文档。)

    创建软链接。创建之后,打python3.4就能启动Python 3.4.3了。

    第一行创建/usr/bin/python3.4这个软链接指向Python 3.4.3。

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

    sudo ln -s /opt/python3.4/bin/python3.4   /usr/bin/python3.4
    sudo ln -s /opt/python3.4/bin/pip3.4         /usr/bin/pip3.4

    (注意不要覆盖/usr/bin/python3这个软链接,python3命令(启动系统自带的Python)及其安装的模块承担了系统维护的工作。

    至此,安装成功,打python3.4可以启动Python 3.4.3

    需要说明一下,在新安装的Python 3.4.3里可以正常使用sqlite3,但sqlite的版本比较旧:

    Windows上Python 3.4.3自带的sqlite版本是3.8.3.1,这是因为使用了Raspbian自带的sqlite的缘故,其它通过链接使用的模块也可能出现此问题。

  • 相关阅读:
    Oracle 中 varchar2(N) 与 varchar2(N char) 的区别
    EXP-00008: 遇到 ORACLE 错误 1455
    服务器重装Windows Server2008 R2操作系统
    h5页面自定义主题色(vue)
    初窥vue3.0
    ElasticSearch学习笔记_1
    mysql索引的使用
    什么时候使用视图
    Latex使用手册记录
    最大熵模型理论及NLP应用总结
  • 原文地址:https://www.cnblogs.com/infopi/p/update_python_raspbian.html
Copyright © 2020-2023  润新知