更新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
2
3
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

更新pyenv:

1
pyenv update

卸载pyenv:

1
rm -fr ~/.pyenv

并从.bashrc中删除一下三行:

1
2
3
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)

安装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
2
3
url = “https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

安装原来的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
2
chromium-browser --version
Chromium 60.0.3112.89 Built on Ubuntu 14.04, running on Raspbian 9.3

参考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
2
3
4
from requestium import Session, Keys
s = Session(webdriver_path='/usr/lib/chromium-browser/chromedriver', browser='chrome', default_timeout=15, webdriver_options={'arguments': ['headless']})
s.driver.get("https://qieman.com/longwin/index")
print([{"code": i.text[-7:-1], "name": i.text[:-8]} for i in s.driver.ensure_element_by_xpath("//section[@class='plan-asset']").find_elements_by_xpath("div//div[@class='variety-fund']")])

(对,我的程序就是用来爬基金数据的[捂脸])

使用最新的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
2
3
wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
sudo md5sum Miniconda3-latest-Linux-armv7l.sh
sudo /bin/bash Miniconda3-latest-Linux-armv7l.sh

配置anaconda:

1
2
3
sudo nano /home/pi/.bashrc
export PATH="/home/pi/miniconda3/bin:$PATH
conda install --channel RaspberryPi package

新建conda环境

1
conda create -n webenv python=3.5

激活环境:

1
source activate webenv

注销环境:

1
source deactivate

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×