python - 安装python包供root用户使用

标签 python ubuntu pip systemd

我已经阅读了所有内容,但我仍然无法让我的 python 脚本在 systemd 中运行。
这是我使用的 shell 脚本:

#! /bin/sh
cd /home/albert/speedcomplainer
/usr/bin/python speedcomplainer.py

我可以执行脚本( /usr/bin/speedcomplainer ),它从命令行运行得很好。 python 脚本永远循环,检查我的网速。正如我所说,它运行良好,直接从命令行(python ...)或从我在 usr/bin 中创建的 shell 脚本运行。

但是当我把它放到这个单元文件中时:
# speedcomplianer - checks and tweets comcast speeds.
#
#

[Unit]
Description=Ethernet Speed Complainer
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/home/albert/speedcomplainer
ExecStart=/usr/bin/speedcomplainer
Restart=always
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

它无法启动( sudo systemctl start speedcomplainer.service )并出现以下错误:
 speedcomplainer.service - Ethernet Speed Complainer
   Loaded: loaded (/lib/systemd/system/speedcomplainer.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit) since Wed 2016-02-24 20:21:02 CST; 7s ago
  Process: 25325 ExecStart=/usr/bin/speedcomplainer (code=exited, status=1/FAILURE)
 Main PID: 25325 (code=exited, status=1/FAILURE)

我用 journalctl -u speedcomplainer 查看日志和 :
Feb 24 20:21:02 haven systemd[1]: Started Ethernet Speed Complainer.
Feb 24 20:21:02 haven speedcomplainer[25325]: Traceback (most recent call last):
Feb 24 20:21:02 haven speedcomplainer[25325]: File "speedcomplainer.py", line 9, in <module>
Feb 24 20:21:02 haven speedcomplainer[25325]: import twitter
Feb 24 20:21:02 haven speedcomplainer[25325]: ImportError: No module named twitter
Feb 24 20:21:02 haven systemd[1]: speedcomplainer.service: Main process exited, code=exited, status=1/FAILURE
Feb 24 20:21:02 haven systemd[1]: speedcomplainer.service: Unit entered failed state.
Feb 24 20:21:02 haven systemd[1]: speedcomplainer.service: Failed with result 'exit-code'.
Feb 24 20:21:02 haven systemd[1]: speedcomplainer.service: Service hold-off time over, scheduling restart.
Feb 24 20:21:02 haven systemd[1]: Stopped Ethernet Speed Complainer

啊哈哈!! python 脚本中的导入错误。

但是等等 - 它适用于其他任何地方。为什么只有从 systemd 运行时才会收到导入错误? (答案 - 模块安装在本地。下一个问题:)

好的。在遵循@jcomeau_ictx 引导我的路径之后,似乎 pip 安装到了我的本地用户目录。如何安装模块以供 root 使用?

最佳答案

好的。感谢 jcomeau_ictx , 我解决了这个问题。 pip 默认安装在本地。这个post详细讨论了如何在系统范围内安装 (TL;DR apt-get.)。这是为 root 用户安装的。我不想弄乱虚拟环境,它只是一个几乎没有依赖关系的模块。

关于python - 安装python包供root用户使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617187/

相关文章:

python - 使用 numpy 拉伸(stretch)、缩放或加倍数组?

python - Databricks:将数据帧合并到sql数据仓库表中

python - 识别字符串中的字典单词

java - 从 tika-app 调用 ctakes 解析器时出现异常

python - pip 安装文件中列出的多个包以及本地目录中的源

python - 如何理解负 k 索引的 python 切片?

qt - 在 ubuntu 22.04 上启动 spyder 时出错

python - 无法升级 pip

python - 使用 pip 安装多个版本的包

linux - vmware 中的 Pyrit CPU 基准测试比主机上快得多