LoginSignup
7
3

More than 1 year has passed since last update.

手動では動くのに、cronでpythonが動かない時の対処法(結論PATHを指定しよう)

Last updated at Posted at 2022-04-19

pythonのスクリプトファイルが手動で実行すると動くのに、cronに設定すると何故か動かなくてハマりました。同じようにハマっている方に向けて備忘録を残します。

1. 実施したこと

①EC2にpython3の仮想環境をインストール (インストール方法)
②home配下にpythonのスクリプトファイル(test.py)を配置
③下記のコマンドで手動実行させた場合には実行可能

(env) [ec2-user@ip-xx-xx-xx-xx ~]$python3 test.py

④crontabで以下のように設定

* * * * * python3 test.py

⑤boto3モジュールがないよとエラーが発生

Traceback (most recent call last):
 File "test.py", line 3, in <module>
   import boto3
ModuleNotFoundError: No module named 'boto3'

2. 原因

・cronは環境変数をもたない
・pyenv環境を利用している場合、PATHの明示が必要

3. 解決策

①以下のコマンドでPATHを確認する

(env) [ec2-user@ip-xx-xx-xx-xx ~]$env
:
:
PATH=/home/ec2-user/my_app/env/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

②crontab -eで最初の行にPATHを追記する

PATH=/home/ec2-user/my_app/env/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

* * * * * python3 test.py

cronで問題なく実行できました!

4. 参考記事

こちらの記事が大変参考になりました!ありがとうございます!!

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3