2017年4月21日金曜日

direnvがcronでなぜか動かない時の対処法

direnvはPythonなどの作業には非常に便利なツールです。しかしいざ本番環境に移行しcronで使おうとすると動かなくて困る事があります。 例えば以下のような症状が出た時は、まず実行方法を確認すると良いと思います。
  1. cronで実行すると作業ディレクトリで指定したpythonと違うバージョンで動いてしまう
  2. cronで実行するとpythonが見つからないと怒られる

これはcronで実行した時にdirenvが実行ディレクトリを判断できないために起こる問題です。 普段の作業ではcdした瞬間にdirenvがよしなに取り計らってくれるので、以下の実行方法でdirenvで設定したpythonを実行してくれます。
cd working_dir
python hoge.py

しかしcronから実行する場合にはcdして平凡に実行するだけではdirenvはきちんと判別できないようです。どこで実行しているのかを明示するために、以下のように実行する必要があります。
direnv exec working_dir python hoge.py

direnv --helpにはこの実行方法がきちんと書かれているのですが、普段が便利過ぎて最初は気付けませんでした。

0 件のコメント: