树莓派 Python3下安装Django

升级树莓派Python解决Django版本兼容问题
本文讲述了在树莓派3B上升级Python版本以适应Django 3.2的必要性,涉及编译安装Python 3.7.3并确保SQLite3集成的过程,以及解决遇到的ImportError问题。

核心问题是要解决Django版本和Python版本匹配问题。版本间兼容关系如下,详细可以看这里

Django versionPython versions
2.23.5, 3.6, 3.7, 3.8 (added in 2.2.8), 3.9 (added in 2.2.17)
3.13.6, 3.7, 3.8, 3.9 (added in 3.1.3)
3.23.6, 3.7, 3.8, 3.9

从以上可知,如果要安装最新的Django3.2,那Python版本必须要3.6以上。而现在手上的树莓派3B里的Python是3.4,所以必须要先升级。

升级方法都要涉及到Python的编译,具体如下。

sudo apt update
sudo apt install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev      #安装依赖库
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
tar zxvf Python-3.7.3.tar.xz
cd Python-3.7.3
sudo ./configure
sudo make -j4    #多核心编译
sudo make altinstall       #不替换原版本

rm -rf /usr/bin/python3     
sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3     #修改默认Python3

rm -rf /usr/bin/pip3
sudo ln -s /usr/local/bin/pip3.7 /usr/bin/pip3    ##修改默认Pip3

安装完成后,当运行 python3 manage.py runserver 8000后,出现错误提示,
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()

....

最终提示找不到sqlite3,无法import

当时考虑这里有两个问题,一个是需要安装sqlite3,另一个对于Exception,查了网上的说法和Django版本有关,需要降级。但实际查了官网的版本对应关系后,Python3.7是完全没有问题的。所以检查没有尝试降级的做法,先是考虑安装sqlite3。

关于sqlite安装,网上的做法是要下载编译sqlite,然后再次编译Python,看上去很繁琐。同时在Django的安装文档里也看到sqlite是在Python里应该已经自带,所以提出问题,为什么刚才的安装里没包含呢?后来对比了多个树莓派Python的升级方法中,对于依赖库的安装,有些是带了sqlite,有些是没带,而我一开始用的恰好是没带的方法。然后,马上尝试单独追加安装依赖,并重新编译Python,在做auto configure的时候,应该会找到sqlite并把它包含编译进去。

sudo apt install libsqlite3-dev sqlite3

安装完成后,在Python3下,import sqlite3可以验证是否安装成功。还可以这样验证: find / -name _sqlite*.so,是否能在Python3.7下找到so文件。

说明一下,上面的依赖库安装已经是包含sqlite3了。

好,现在再次运行, python3 manage.py runserver 8000 一切正常了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值