Pycharmからのスクリプト実行で環境変数PATHを指定する
djangoアプリ内から、subprocessでシェルコマンドを動かしているところでOSErrorになっていた。
OSError: [Errno 2] No such file or directory
単純なスクリプトにするとこんな感じで、これでエラーが再現する。
# coding=utf-8 import subprocess print subprocess.check_output(['convert', '--version'])
実行中の環境変数を調べてみると/usr/local/binにPATHが通って無かった。
もちろんシェルの環境変数には設定してあるけど、Pycharmから起動すると引き継がない。
import os print os.environ["PATH"] # /usr/bin:/bin:/usr/sbin:/sbin:/Users/yuhei/.virtualenvs/sandbox/bin
Run -> Edit Configurationから Environment variablesを設定できるのでこうしてみた
/usr/local/bin:$PATH
これで動いたけど、PATHを見てみると、$PATHがそのまま文字列として含まれていて、/usr/binにもパスが通らなくなってしまっている。
import os print os.environ["PATH"] # /usr/local/bin:$PATH:/Users/yuhei/.virtualenvs/sandbox/bin
とりあえず必要なPATHだけ指定しといた。
/usr/local/bin
import os print os.environ["PATH"] # /usr/local/bin:/Users/yuhei/.virtualenvs/sandbox/bin