迫于快吐了,咨询下树莓派上 Python 自启问题

2021 年 1 月 16 日
 nidongpinyinme
nohup python3 /home/pi/Recorder.py >> log.txt 2>&1 &

4009 次点击
所在节点    Python
18 条回复
jianixrabbit
2021 年 1 月 16 日
看看脚本当时的环境变量
cmos
2021 年 1 月 17 日
有 systmd 不用,跑去用歪门邪道的 rc.local,出 bug 都难修。systemd 脚本如下,安装实际情况,修改用户和路径:
```
[Unit]
Description=Python Service
After=multi-user.target

[Service]
WorkingDirectory=/path/
User=root
Type=idle
ExecStart=/usr/bin/python3 /path/python.py
Restart=always

[Install]
WantedBy=multi-user.target
```
farmer01
2021 年 1 月 17 日
nohup /usr/bin/python3 /home/pi/Recorder.py >> log.txt 2>&1 &
nidongpinyinme
2021 年 1 月 17 日
@jianixrabbit 在脚本里打印了环境变量发现确实和终端执行时的不一样,少了三方库的路径,那么他读的是哪个变量呢
nidongpinyinme
2021 年 1 月 17 日
@imes 谢谢哥,给我推开了新世界的门
nidongpinyinme
2021 年 1 月 17 日
@farmer01 指定了也是不行,好像是脚本里面找不到 python 的三方库路径
nidongpinyinme
2021 年 1 月 17 日
@jianixrabbit 说的有点傻了,我是用 python 的 sys.path 打印的
exiledkingcc
2021 年 1 月 17 日
你在终端里面运行的时候,会加载用户的一些环境变量。
在 rc.local 运行的时候,没有这些东西。
改成 systemd,然后把必要的 path 配置进去就行了。
或者用 python 虚拟环境。
no1xsyzy
2021 年 1 月 17 日
现在 rc.local 也是靠 systemd 里一个 rc-local.service 来启动的…… 纯粹是向后兼容的目的留着的,没必要用

至于 sys.path 还是自己看文档吧: https://docs.python.org/3/library/sys.html#sys.path
bao3
2021 年 1 月 17 日
其实对于一般的需求,rc.local 很方便,也不理解为啥系统要取消
JamesMackerel
2021 年 1 月 17 日
PYTHONPATH 环境变量了解一下。
nidongpinyinme
2021 年 1 月 17 日
@exiledkingcc 我改成 systemd 可以直接用 /叹气
nidongpinyinme
2021 年 1 月 17 日
@no1xsyzy 敬礼
farmer01
2021 年 1 月 17 日
@nidongpinyinme 可以像 imes 说的,注册成系统服务,或者是在 crontab 里引用 PATH
imycc
2021 年 1 月 18 日
py 依赖找不到的简单排错办法,启动的时候把 sys.path 打印出来,跟交互环境下的做对比。

常见的错误是系统存在多个 py 版本,执行的时候是另一个 py 。或者你安装库的时候加了--user,把库安装到$HOME/.local 下面去了,执行的时候环境不一样。
neroxps
2021 年 1 月 18 日
2020 年了,还在用 rc.local

SYSTEMD 作者现在还活的好好的
nidongpinyinme
2021 年 1 月 18 日
@neroxps 学会了学会了
nidongpinyinme
2021 年 1 月 18 日
@imycc 是的,我这边是装库位置不对

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/745563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX