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

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

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

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

Raspberry Pi

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

解決済

ラズベリーパイでsystemdでの実行時 "のみ" Open-CVのインポートが出来ない

shinchoroX
shinchoroX

総合スコア8

systemd

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

Raspberry Pi

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

1回答

0評価

0クリップ

777閲覧

投稿2021/09/22 00:59

編集2021/09/22 05:46

前提・実現したいこと

ラズペリーパイOSでsystemdを用いた、pythonプログラムの自動起動に失敗する。
Thonny上での実行は問題が無いが、systemd経由だとOPEN-CVのモジュールがオープン出来ない。

半年前までエラーが無く動作していた。今回新しいラズパイに移植する際に、上記問題が発生した。

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

Thonny(ラズペリーパイOS標準のIDE)からは実行が可能。
.timer
.service
を用いて、起動後、1min後にプログラムが起動するようにしたが
sudo systemctl status leasematCC.service
でステータスを確認すると以下のように
pvencvが起動できずにエラーが発生している。

leasematCC.service - Leasemat Customer Counter System auto boot Loaded: loaded (/etc/systemd/system/leasematCC.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2021-09-22 09:36:54 JST; 39s ago Main PID: 1016 (code=exited, status=1/FAILURE) 9月 22 09:36:54 raspberrypi systemd[1]: Started Leasemat Customer Counter System auto boot. 9月 22 09:36:54 raspberrypi python3[1016]: Traceback (most recent call last): 9月 22 09:36:54 raspberrypi python3[1016]: File "/home/pi/Leasemat/CC.py", line 43, in <module> 9月 22 09:36:54 raspberrypi python3[1016]: import Camera_Count as CAMC 9月 22 09:36:54 raspberrypi python3[1016]: File "/home/pi/Leasemat/Camera_Count.py", line 13, in <module> 9月 22 09:36:54 raspberrypi python3[1016]: import cv2 as cv 9月 22 09:36:54 raspberrypi python3[1016]: ModuleNotFoundError: No module named 'cv2' 9月 22 09:36:54 raspberrypi systemd[1]: leasematCC.service: Main process exited, code=exited, status=1/FAILURE 9月 22 09:36:54 raspberrypi systemd[1]: leasematCC.service: Failed with result 'exit-code'.

該当のソースコード

/etc/systemd/system に
leasematCC.service
leasematCC.timer
の2つを作成している。

######[leasematCC.serviceの中身]

[Unit] Description= Leasemat Customer Counter System auto boot [Service] ExecStart=/usr/bin/python3 /home/pi/Leasemat/CC.py

######[leasematCC.timerの中身]

[Unit] Description=daily do something [Timer] OnBootSec=1min [Install] WantedBy=timers.target

試したこと

pipでのインストールや
pip3 install opencv-python

$ sudo apt-get install python-opencv
$ sudo apt-get install libopencv-dev
などをネットで調べて試したが解決しない。

###頂いたアドバイスの実行結果

import sys
import os
import pprint
print(sys.executable)
pprint.pprint(sys.path)
print(os.getenv('PYTHONPATH'))

を実行した場合の結果

Thonny上での実行結果の表示

/usr/bin/python3 ['/home/pi/Leasemat', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/pi/.local/lib/python3.7/site-packages', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages'] None

systemdで実行させた場合でのターミナル上で systemctl status での表示

9月 22 14:37:07 raspberrypi systemd[1]: Started Leasemat Customer Counter System auto boot. 9月 22 14:37:07 raspberrypi python3[1016]: /usr/bin/python3 9月 22 14:37:07 raspberrypi python3[1016]: ['/home/pi/Leasemat', 9月 22 14:37:07 raspberrypi python3[1016]: '/usr/lib/python37.zip', 9月 22 14:37:07 raspberrypi python3[1016]: '/usr/lib/python3.7', 9月 22 14:37:07 raspberrypi python3[1016]: '/usr/lib/python3.7/lib-dynload', 9月 22 14:37:07 raspberrypi python3[1016]: '/usr/local/lib/python3.7/dist-packages', 9月 22 14:37:07 raspberrypi python3[1016]: '/usr/lib/python3/dist-packages'] 9月 22 14:37:07 raspberrypi python3[1016]: None 9月 22 14:37:07 raspberrypi systemd[1]: leasematCC.service: Succeeded.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yuki23

2021/09/22 01:21

pip にはどのようにインストールしましたか?
shinchoroX

2021/09/22 01:32

本文中にも追記しました。 pip3 install opencv-python としました。
jbpb0

2021/09/22 04:16

> Thonny上での実行は問題が無いが、systemd経由だとOPEN-CVのモジュールがオープン出来ない。 うまく行く場合とダメな場合のそれぞれで、下記のPythonコードを実行したら、結果表示に相違点はありませんか? import sys import os import pprint print(sys.executable) pprint.pprint(sys.path) print(os.getenv('PYTHONPATH'))
shinchoroX

2021/09/22 05:42

差異がありました。 ディレクトリのパスが違う?ようです。 本文中の追記の方が、見やすく修飾できるので、結果を貼っております。 引き続きアドバイスを頂けると幸いです。
jbpb0

2021/09/22 06:25

pip3 install opencv-python を実行した時と同じ状態で、 pip3 show opencv-python を実行して、いろいろ表示される中の「Location:」で始まる行に書かれてる内容は、 /home/pi/.local/lib/python3.7/site-packages でしょうか? もしそうなら、Pythonコードの先頭に下記を追加してみてください import sys sys.path.append("/home/pi/.local/lib/python3.7/site-packages")
shinchoroX

2021/09/22 06:52 編集

ありがとうございます。 仰る通り /home/pi/.local/lib/python3.7/site-packages でしたので、アドバイス通りにコードを追加すると動きました。 → ターミナルでステータスをみると「active(running)」となりました。 しかし、新しい問題が発生してしまいました。 「プログラムがrunしているが、実際の動作がしていない(ただしThonnyからの手動はOK)」 と言う問題です。 【調査方法】 プログラムがrunすると  ① GPIOにつないだLEDの点灯  ② 人感センサーに反応があると、写真を写して保存 と言う動作をするのですが、両方(①②)とも反応がありません。 Thnoyから起動時のみ、保存先ディレクトリに写真が保存され、LEDも点灯しております。 【追記】 後出しで申し訳ございませんが、一昨日にガチャガチャ触っているとこの問題となりました。 (runningしているが、プログラムが動作しない) そして、昨日にもう一度OSから設定しなおすと、この質問の問題(systemdで起動しない)が発生してしまいました。 厚かましいお願いですが、何かアドバイスを頂けると幸いです。 現在、私の手元の書籍ラズベリーパイ入門書3冊と 「イラストでそこそこわかるLinux」(LPIC1初心者レベル)でして、必死に調べているつもりではあるのですが・・・
shinchoroX

2021/09/22 07:10 編集

申し訳ございません。 情報を整理しなおします。 現在、もう一度再起動すると ステータスがactive:failed となりました。 →numpyのアップグレードのエラーみたいなので、対応しています。
jbpb0

2021/09/22 07:11

> 「プログラムがrunしているが、実際の動作がしていない(ただしThonnyからの手動はOK)」 は内容が違うので、別の質問にしてください
jbpb0

2021/09/22 07:12

> もう一度再起動するとステータスがactive:failed 「ModuleNotFoundError: No module named 'cv2'」に戻ったのですか? もし戻って無いなら、起きてる現象はこれまでと違います
shinchoroX

2021/09/22 07:15

いえ。 ImportError: numpy.core.multiarray failed to import でしたので、numpyをアップグレードして確認します。 また、仰る通り今回の質問は先のアドバイスで解決しましたので、別での質問を致します。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

systemd

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

Raspberry Pi

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