通过systemd运行Python脚本无法加载模块

前端之家收集整理的这篇文章主要介绍了通过systemd运行Python脚本无法加载模块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用zmq的 Python脚本,我通过pip install zmq安装了这个库,如果通过命令行手动调用,我可以正常运行程序.但是,只要我尝试让systemd单元调用脚本,运行systemctl status myservice.service就会显示ImportError:没有名为zmq的模块.

我的服务文件如下所示:

[Unit]
Description=Does Something

[Service]
Type=simple
ExecStart=/bin/sh /var/lib/project/runpythonscript.sh
Restart=always

[Install]
Alias=myservice.service

runpythonscript.sh是一个非常简单的shell脚本,以root身份运行我的python脚本.从命令行手动运行这个shell脚本运行我的python程序完全正常但是通过服务调用它导致它找不到zmq模块.

任何帮助表示赞赏.

解决方法

systemd以root身份运行.通过pip安装的模块是为用户而不是系统安装的,因此安装没有root权限的模块会使模块无法访问root.

为了解决这个问题,我运行了sudo -H pip install zmq和sudo -H pip3 install zmq来为root用户安装Python 2.7和Python 3的软件包.这允许systemd在尝试执行Python脚本时访问模块.

猜你在找的Python相关文章