想要实现的效果:树莓派开机运行虚拟机中的streamlit,使内网通过192.XX这种网址正常访问页面。
2022年4月,树莓派官网发布了支持老硬件的64位系统,默认内置64位的python3.9,很方便。
在树莓派的官网安装64位的操作系统:Operating system images – Raspberry Pi
并设置root密码:
sudo passwd root
(我所用的pyarrow-6.0.1不支持32位python,这也是之前一直没成功的原因之一)
首先切换至root账户:sudo su。
设置树莓派可远程登入root:
sudo nano /etc/ssh/sshd_config
#找到 #PeimitRootLogin prohibit-password (树莓派4B) 或者#PermitRootLogin without-password,修改为
PermitRootLogin yes #注意需要去掉注释#
root密码d入手了树梅派4B,上电后,安装portainer的时候想获得root权限,输入su,恩?密码是多少?不记得了,输了好几遍登录密码也不对,无法进入了。查了一下,原来树莓派的Raspbian系统root用户默认是禁用状态,且没有密码,所以要先设置个密码,然后开启才能正常使用。我还没开启root。
目录
1.Root安装python3.8,必须得是64位的python,
参考 https://www.jianshu.com/p/ba55a4ea7047
2.升级pip和安装virtualenv
3.设置虚拟环境
4.设置开机自动运行
5.重启
1.Root安装python3.8,必须得是64位的python
参考 https://www.jianshu.com/p/ba55a4ea7047
若是新版64位树莓派系统,则本步可忽略。
进入python环境,查看python是多少位的:
import platform
platform.architecture()
若是新版64位树莓派系统,则本步可忽略。
设置软链接:sudo rm /usr/bin/python
sudo ln -s /usr/local/bin/python3 /usr/bin/python
/usr/local/bin/python3这个是python3.8的那个安装文件,要注意
更改pip软链接:sudo rm /usr/bin/pip
sudo ln -s /usr/local/bin/pip3 /usr/bin/pip
若是新版64位树莓派系统,则第一步可忽略。
2.升级pip和安装virtualenv
- 升级pip到22.2:
sudo pip install --upgrade pip
- 安装virtualenv 和 virtualenvwrapper:
sudo apt-get install virtualenv
sudo apt-get install virtualenvwrapper
或者使用 pip3 安装,pip3 安装的时候一定要用 sudo 权限,否则会出一些莫名其妙的情况。
sudo pip3 install virtualenv virtualenvwrapper
看看这个库有没有安装:find -name virtualenv
/以下似乎不用写入
写入环境变量:vi /etc/profile
加入这行代码:PATH=$PATH:/usr/local/python3/bin
以上似乎不用写入/
文件修改之后要重启:sudo reboot
查看是否有了命令:virtualenv -V (如果成功它会有错误提示:说需要参数 the following arguments are required: dest)
这时就可以把本机项目的需要的文件,复制到这个venv文件夹中了。
3.设置虚拟环境
普通用户下(这时就别在普通和root来回切换了):virtualenv -p /usr/bin/python3 venv
- cd到这个venv目录,激活虚拟环境:source ./bin/activate
Pip list查看当前库,如果它提示要升级pip,那就升级:
/home/pi/venv/bin/python -m pip install --upgrade pip
查看虚拟环境中的python版本:python -V
将项目生成的库列表,复制到这个文件夹(pip freeze > requirements.txt),
在原项目中,导出离线包
pip download -d require -r requirements.txt
<以下灰色字可能要用到,新的64位系统应该不用这样了>
一会先安装离线的,将requirements.txt 放在require文件夹中,在服务器端cd到require文件夹,pip install --no-index --find-links=./ -r requirements.txt
这里注意,先安装pandas:
(如果卡在Installing build dependencies ... \,我就退出,然后重新链接,再换源安装。)
有几个库要注意:sudo apt-get install python3-pandas
或:sudo apt-get install python3-pandas==1.3.5
或:sudo apt-get install pandas==1.3.5
或:pip install pandas==1.3.5(我用这种方式安装上的)
安装库:
pip install -r requirements.txt
或用其他源安装pip install -i https://mirrors.aliyun.com/pypi/simple -r requirements.txt(国内pip源如下:
阿里云:https://mirrors.aliyun.com/pypi/simple
豆瓣:https://pypi.douban.com/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple
命令写法为:pip install 安装包名 -i 其他pip源的url,如pip install pandas-datareader -i http://mirrors.aliyun.com/pypi/simple
使用这些pip下载可以提高下载速度,大大加速。
原文链接:)
还是64位新系统好用啊!
退出虚拟环境:在这个虚拟环境的文件夹下 deactivate
4.设置开机自动运行
我是在venv文件夹下新建一个sh文件,并编辑:
sudo nano /home/pi/venv/go.sh
写入内容:
#!/bin/sh #
cd /home/pi/venv/bin #进入虚拟环境的bin文件夹
source activate #运行虚拟环境
cd .. #退回上一层文件夹
streamlit run Main.py #运行相应的py文件
将shell改为bash,这样配合下面的文件改动就能开机运行.sh文件:
chsh -s /bin/bash
然后编辑启动文件:
sudo nano /etc/rc.local
在文件的 exit 0 之前,添加执行sh文件的脚本:
sudo bash /home/pi/venv/go.sh
先测试这个sh文件能否正常运行:./go.sh
Network URL和External URL
5.重启
重启sudo reboot,就能在浏览器中输入地址、查看运行情况了。
此时,登录,ps -ef可以查看当前的进程。