通过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脚本时访问模块. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |