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

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

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

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

Raspberry Pi

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

Q&A

解決済

1回答

3484閲覧

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

shinchoroX

総合スコア17

systemd

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

Raspberry Pi

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

0グッド

0クリップ

投稿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.

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

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

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

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

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

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をアップグレードして確認します。 また、仰る通り今回の質問は先のアドバイスで解決しましたので、別での質問を致します。
guest

回答1

0

ベストアンサー

Thonny上での実行は問題が無いが、systemd経由だとOPEN-CVのモジュールがオープン出来ない。

うまく行く場合とダメな場合のそれぞれで、下記のPythonコードを実行して、結果表示に相違点がないか確認してください

python

1import sys 2import pprint 3pprint.pprint(sys.path)

もし、うまく行く方にだけ表示されるパスがあれば、Pythonコードの先頭に下記を追加してみてください

python

1import sys 2sys.path.append("うまく行く方にだけ表示されるパス")

投稿2021/09/22 07:09

jbpb0

総合スコア7653

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

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

shinchoroX

2021/09/22 07:17 編集

ありがとうございました。 実行している場所??の違いなのでしょうか。 (頂いたアドバイスが答えなので)解法が得られましたので、これを足掛かりに勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問