加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:17:38 所属栏目:Python 来源:网络整理
导读:我有一个使用zmq的 Python脚本,我通过pip install zmq安装了这个库,如果通过命令行手动调用,我可以正常运行程序.但是,只要我尝试让systemd单元调用脚本,运行systemctl status myservice.service就会显示ImportError:没有名为zmq的模块. 我的服务文件如下所
我有一个使用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脚本时访问模块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读