Header
2019-10-26
2019-11-08

CronでPythonのモジュールがImportError: No moduleになる

2019 10 26 error point

CronでPythonファイルを実行したところ、ライブラリがエラーになりImportError: No module hoge となりました。

しかしコンソール上ではpythonコマンドで実行したところ正常に起動して、Cronの設定に問題があったので対応策を記載します。

実行したいPythonのファイル

/home/pic/test.py

Pythonは3.6でPvenvでインストールしている

CronでPythonファイルを実行したときにImportError: No module の対応方法

以下の2つ方法があり、どちらでも可能です

pyenvのPythonをフルパスで指定するか、

別途Pythonファイルを読み込むシェルスクリプトのファイルを作成

Cron実行時にPythonの実行をフルパスで指定する方法

pythonはpvenvでダウンロードしており、場所は以下

 which python

/home/pi/.pyenv/shims/python

Cronで上記のファイルをフルパスで実行する

* * * * *  /home/pi/.pyenv/shims/python home/pic/test.py

フルパスで指定しないと、pvenvが読み込まれずインストールしたライブラリがImportError: No module でエラーになります。

Pyhonファイルを呼び出すシェルスクリプトを作成する方法

以下のようなシェルスクリプトのファイルを作成

以下ではpvenvを呼び出して、pythonファイルを実行する

test.sh

#!/bin/bash

export PATH=/home/pi/.pyenv/bin:$PATH
eval "$(pyenv init -)"
python /home/pic/test.py

Cronで上記のファイルを実行する

2 * * * * sh /home/pic/test.sh

上記どちらでも対応可能です

その他関連記事

ラズパイ(Raspberry Pi) 3 Model b+でカメラを操作する

ラズパイへOpenCVをインストールして画像解析する

ラズパイ(Raspberry Pi) 3 Model b+で人感センサーで監視カメラを作成する

ラズパイ(Raspberry Pi) +Python3でS3のバケットへファイルを一括アップロードする

ラズパイへPyenvでPython3をインスールする

ラズパイで撮影した動画をグーグルドライブにアップロードする

前の記事
次の記事
人気記事
カテゴリーから記事を探す