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

2021-01-16 23:31:52 +08:00
 nidongpinyinme
nohup python3 /home/pi/Recorder.py >> log.txt 2>&1 &

3088 次点击
所在节点    Python
18 条回复
jianixrabbit
2021-01-16 23:59:06 +08:00
看看脚本当时的环境变量
imes
2021-01-17 00:12:37 +08:00
有 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-01-17 08:16:58 +08:00
nohup /usr/bin/python3 /home/pi/Recorder.py >> log.txt 2>&1 &
nidongpinyinme
2021-01-17 09:27:35 +08:00
@jianixrabbit 在脚本里打印了环境变量发现确实和终端执行时的不一样,少了三方库的路径,那么他读的是哪个变量呢
nidongpinyinme
2021-01-17 09:39:20 +08:00
@imes 谢谢哥,给我推开了新世界的门
nidongpinyinme
2021-01-17 09:51:36 +08:00
@farmer01 指定了也是不行,好像是脚本里面找不到 python 的三方库路径
nidongpinyinme
2021-01-17 09:52:14 +08:00
@jianixrabbit 说的有点傻了,我是用 python 的 sys.path 打印的
exiledkingcc
2021-01-17 11:14:20 +08:00
你在终端里面运行的时候,会加载用户的一些环境变量。
在 rc.local 运行的时候,没有这些东西。
改成 systemd,然后把必要的 path 配置进去就行了。
或者用 python 虚拟环境。
no1xsyzy
2021-01-17 12:45:32 +08:00
现在 rc.local 也是靠 systemd 里一个 rc-local.service 来启动的…… 纯粹是向后兼容的目的留着的,没必要用

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

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

SYSTEMD 作者现在还活的好好的
nidongpinyinme
2021-01-18 22:12:37 +08:00
@neroxps 学会了学会了
nidongpinyinme
2021-01-18 22:13:25 +08:00
@imycc 是的,我这边是装库位置不对

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

https://www.v2ex.com/t/745563

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

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

© 2021 V2EX