Python3脚本作为deamon(通过systemctl)及其依赖项

Python3脚本作为deamon(通过systemctl)及其依赖项,python,python-3.x,Python,Python 3.x,我不是python开发人员。 我尝试在机器启动期间启动一个pythonweb服务器脚本() 我准备了一个init-d脚本,这似乎是一个有效的尝试,但是python脚本报告缺少依赖项 如果我直接运行python3脚本,它可以正常工作。 但是尝试使用init.d systemctl脚本运行它时,脚本失败,日志如下: Jan 11 17:05:07 raspberrypi systemd[1]: Starting qtumui.service... Jan 11 17:05:07 raspberryp

我不是python开发人员。 我尝试在机器启动期间启动一个pythonweb服务器脚本()

我准备了一个init-d脚本,这似乎是一个有效的尝试,但是python脚本报告缺少依赖项

如果我直接运行python3脚本,它可以正常工作。 但是尝试使用init.d systemctl脚本运行它时,脚本失败,日志如下:

Jan 11 17:05:07 raspberrypi systemd[1]: Starting qtumui.service...
Jan 11 17:05:07 raspberrypi qtumui[12111]: Starting /home/pi/qtum-ui/app.py:Traceback (most recent call last):
Jan 11 17:05:07 raspberrypi qtumui[12111]:   File "/home/pi/qtum-ui/app.py", line 3, in <module>
Jan 11 17:05:07 raspberrypi qtumui[12111]:     from flask import Flask, render_template, request, flash, url_for, redirect, send_file
Jan 11 17:05:07 raspberrypi qtumui[12111]: ImportError: No module named 'flask'
Jan 11 17:05:07 raspberrypi qtumui[12111]:  failed!
Jan 11 17:05:07 raspberrypi systemd[1]: Started qtumui.service.

有什么办法可以解决这个问题吗

好的,我设法找到了缺少依赖项的原因。 我使用“pip3”将依赖项安装为用户“pi”,在这种情况下,模块将被安装到
/home/pi/.local/lib/python3.5/dist包/

init脚本以其他默认用户(可能是root)的身份运行,这就是脚本无法找到依赖项的原因

为了解决这个问题,我需要将init-d脚本更改为以用户“pi”的身份运行,但是如果我以root用户身份安装所需的依赖项,那么该脚本也可以运行

sudo pip3 install flask Flask-WTF Flask-QRcode Flask-Bootstrap

在这种情况下,模块也可以在
/usr/local/lib/python3.5/dist packages/
中找到,因为有些所有权冲突,但服务至少会启动。

首先您说的是systemctl,但随后您提供了一个旧的SysV风格的init脚本。是哪一个?systemd不使用init脚本——它使用(坦率地说,这更可靠;我不是systemd的推动者——我更喜欢或者——但任何流程监控系统都比SysV init脚本好)。最后我使用了一个不同的脚本,但这不是重点。在每种情况下,我都能尝试一下
/etc/init.d/qtumui start
,在每种情况下,我都得到了要执行的python脚本,但有依赖性错误。就我设法解决了这个问题而言,我现在正在进一步调整它,以获得autostartworking@CharlesDuffy但是,感谢您提示我使用systemd,我现在已经尝试过了,而且效果也很好。我们将在未来牢记这一点。
sudo pip3 install flask Flask-WTF Flask-QRcode Flask-Bootstrap