2016-02-25 6 views
0

Я прочитал все, и я до сих пор не могу запустить скрипт python в systemd. Вот сценарий оболочки я использую:Установите пакет python для использования пользователем root

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

Я могу выполнить скрипт (/usr/bin/speedcomplainer), он работает просто отлично из командной строки. Скрипт python навечно проверяет скорость моего интернета. Как я уже сказал, он работает отлично, из командной строки напрямую (python ...) или из сценария оболочки, который я создал в usr/bin.

Но когда я положил его в этот файл модуля:

# 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 

AHAHA !! Ошибка импорта в скрипте python.

Но подождите - это работает со всего мира. Почему я получаю ошибку импорта только тогда, когда она запускается из systemd? Следующий ответ :)

ОК. После того, как я закончил путь @jcomeau_ictx, кажется, что pip установлен в локальный каталог пользователя. Как установить модули для использования root?

+0

Где находится модуль 'twitter'? – larsks

+0

Я установил модуль twitter, используя pip из командной строки. (нет виртуального env и т. д.) – Marc

+0

BTW, я могу сделать скрипт доступным. но поскольку он работает сам по себе, я не думаю, что это уместно. – Marc

ответ

0

ОК. Благодаря jcomeau_ictx, я понял проблему. pip устанавливается локально, по умолчанию. В этом документе post подробно обсуждается, как установить систему (TL; DR apt-get.). Это установлено для пользователя root. Я не хотел связываться с виртуальным env, и это только один модуль с несколькими зависимостями.

Смежные вопросы