質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

982閲覧

Raspberry Piのsystemdで定期実行しようとすると、「モジュールがない」というエラーが出る

yahata

総合スコア1

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2023/04/20 16:54

実現したいこと

  • Raspbrry Pi OSでsystemdを使い、プログラムを定期実行したい
  • プログラムは、seleniumやchrome driverを使用して、定期的にサイトを確認するものです。

前提

こちらのサイトを参考に、Raspbrry Pi OSでプログラムを定期実行させようとしました。

お手本と異なる点

以下の通りで、それに合わせてコードも変えています。

  • Pythonファイルの場所が
/home/自分の名前/ドキュメント/ファイル名.pi
  • サービスファイルとタイマーファイルの名前もそれぞれ「ファイル名.service」「ファイル名.timer」にしてあります。

  • 実行させるプログラムの内容(先述した通りです)

該当のソースコード

サービスファイルを作成するときは

sudo nano /etc/systemd/system/ファイル名.service

内容は

[Unit] Description=省略 After=network.target [Service] ExecStart=/usr/bin/python3 ファイル名.py WorkingDirectory=/home/自分の名前/ドキュメント/ファイル名.pi

タイマーファイルも

sudo nano /etc/systemd/system/ファイル名.timer

にしています。

発生している問題・エラーメッセージ

1分毎にプログラムを動かすように設定したのですが、

systemctl status ファイル名.service

で状態確認をしたところ、

ModuleNotFoundError: No module named 'selenium'

というエラーが出ました。

しかし、Thornyでそのプログラムを実行しようと「Run」ボタンを押した時は普通に実行できています。

試したこと

別のサイトも見て、その方法でも試したのですが、サービスファイルを作る際に

[Service] /home/自分の名前/ドキュメント/ファイル名.pi

にするとプログラムを実行する以前のところで

sudo systemctl start ファイル名

を実行すると

Failed to start ファイル名.service: Unit ファイル名.service not found.

というエラーが出てしまっています。そのため、最初に示した方法で行っています。

補足情報(FW/ツールのバージョンなど)

環境は以下の通りです。

Linux raspberrypi 5.15.84-v8+ #1613 SMP PREEMPT Thu Jan 5 12:03:08 GMT 2023 aarch64 GNU/Linux

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

サービスファイルを以下のようにしたら解決しました。systemdは管理者権限で動かすけれど、thonnyはユーザーの権限rレベルで実行しており、そこで

Environment="PYTHONUSERBASE=/home/自分の名前/.local"

行を追加することで、systemdで実行されるPython環境がユーザーレベルでインストールされたパッケージを認識できるようになったようです。

[Unit] Description=省略 [Service] Type=simple ExecStart=/usr/bin/python3 /home/自分の名前/ドキュメント/ファイル名.py Environment="PYTHONUSERBASE=/home/自分の名前/.local" WorkingDirectory=/home/自分の名前/ドキュメント [Install] WantedBy=multi-user.target

投稿2023/04/21 21:09

yahata

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問