更新Raspbian及相关问题解决
最近注意到树莓派的新版系统放出来一段时间了,就打算给树莓派升级。(虽然高级功能我也用不上,但是怎奈强迫症晚期……)
1. 系统升级
这我就不写了,SD卡一插照着官网做就好了。
2. 软件升级及清理
Raspberry Pi 2/3 Model B
固件升级:
1 | sudo rpi-update && sudo reboot -h now |
软件包升级:
1 | sudo apt-get update && time sudo apt-get dist-upgrade |
软件包清理:
1 | sudo apt-get clean |
3. 免密登录
在树莓派上执行创建.ssh
文件夹:
cd ~
install -d -m 700 ~/.ssh
拷贝电脑上的公钥,默认密码为raspberry
:
1 | cat ~/.ssh/id_rsa.pub | ssh pi@192.168.1.104 'cat >> .ssh/authorized_keys’ |
(后来才知道有个工具叫做ssh-copy-id
,ssh
自带的专门为远程终端复制公钥的命令,特方便,推荐自己man
一下)
4. Python包管理
为了部署多个小程序,我在这里推荐一个连Python官方都推荐的包管理方案 pyenv :
4.1 pyenv的安装及卸载
安装Python版本管理器pyenv:
1 | curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash |
并将一下三行写入.bashrc
:
1 | export PATH="~/.pyenv/bin:$PATH" |
更新pyenv:
1 | pyenv update |
卸载pyenv:
1 | rm -fr ~/.pyenv |
并从.bashrc
中删除一下三行:
1 | export PATH="~/.pyenv/bin:$PATH" |
安装Python环境管理器pipenv
:
1 | pip install pipenv |
4.2 pyenv的使用
新建Python3环境:
1 | cd ~/pyapps/someapp pipenv --three |
将备份的程序拷贝回去
1 | scp -r someappdir pi@192.168.1.104:pyapps/ |
在程序目录下新建Python3环境:
1 | pipenv --three |
删除Pipfile中初始化的[[source]]配置:
1 | url = “https://pypi.python.org/simple" |
安装原来的Python包:
1 | pipenv install --skip-lock -r requirements.txt |
启动新环境:
1 | pipenv shell |
退出新环境:
1 | exit |
5. numpy问题
在pipenv环境下树莓派提供的piwheel安装numpy后无法使用,应对numpy进行本地编译:
1 | pip install --ignore-install --no-cache-dir --no-binary :all: numpy |
6. chromedriver问题
由于我将要部署的小程序用到了requestium和chromedriver,但移植后发现chromedriver运行报错,经过Google编程法发现,需要安装一个版本正确的chromedriver:
查看树莓派上的chromium浏览器版本:
1 | chromium-browser --version |
参考Success: How to run Selenium Chrome webdriver on Raspberry pi
的解决方案
,在chromium-chromedriver binary package in Ubuntu Trusty armhf
下载一个版本正确的chromedriver
对我的chromium 60.0.3112.89来说,63.0.3239.132就可以运行(这个是从新到旧一个一个试出来的T_T),所以:
1 | wget http://launchpadlibrarian.net/354101497/chromium-chromedriver_63.0.3239.132-0ubuntu0.14.04.1_armhf.deb |
双击运行即可安装,用以下代码即可测试:
1 | from requestium import Session, Keys |
(对,我的程序就是用来爬基金数据的[捂脸])
使用最新的chromedriver会出问题的原因,在于chromedriver会调用树莓派上的chromium,而apt-get中chromium目前最新只更新到60,所以需要从新到旧的尝试chromedriver。
7. 配置互联网访问
使用Dataplicity配置互联网访问:
1 | curl https://www.dataplicity.com/fldsy1bm.py | sudo python |
Dataplicity互联网访问异常解决:
1 | https://docs.dataplicity.com/docs/troubleshooting |
通常重启tuxtunnel即可:
1 | sudo supervisorctl restart tuxtunnel |
8. 安装anaconda
Miniconda在Raspberry Pi 3 Model B上的安装:
1 | wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh |
配置anaconda:
1 | sudo nano /home/pi/.bashrc |
新建conda环境
1 | conda create -n webenv python=3.5 |
激活环境:
1 | source activate webenv |
注销环境:
1 | source deactivate |