activate がエラって動かない不具合を修正してみた
前のエントリで、activate が動かないって話、しましたよね?
それを解決しました。
解決編
そもそも activate が何をしていたかって話なんですが、../python-lib 直下にある、 jetpack_sdk_env.py を import して、welcome 関数を呼んでいました。
from jetpack_sdk_env import welcome welcome()
これを実行すると、
Welcome to the Add-on SDK. Run 'cfx docs' for assistance.
と表示される、はず、なのですが、私のところではこの様に表示されました:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named jetpack_sdk_env
これは、jetpack_sdk_env がどこにあるか分かんねぇぞ (#゚Д゚)ゴルァ!!
と python2 が云っているのです。
ということで、jetpack_sdk_env.py の場所を python2 に教えてあげる必要があります。
activate のそれっぽいところを抜粋すると:
VIRTUAL_ENV="`pwd`" if [ "x$OSTYPE" = "xmsys" ] ; then CUDDLEFISH_ROOT="`pwd -W | sed s,/,\\\\\\\\,g`" PATH="`pwd`/bin:$PATH" # msys will convert any env vars with PATH in it to use msys # form and will unconvert before launching PYTHONPATH="`pwd -W`/python-lib;$PYTHONPATH" else CUDDLEFISH_ROOT="$VIRTUAL_ENV" PYTHONPATH="$VIRTUAL_ENV/python-lib:$PYTHONPATH" PATH="$VIRTUAL_ENV/bin:$PATH" fi export CUDDLEFISH_ROOT export PYTHONPATH export PATH
こんな感じで、環境変数 CUDDLEFISH_ROOT、PYTHONPATH、PATH に値を渡しています。 その後、この様に続くわけです:
python2 -c "from jetpack_sdk_env import welcome; welcome()"
文字列のコードを python2 に実行してもらうわけですね。
この時に、上記の環境変数(多分 PYTHONPATH) が正しく python2 に渡されていないんじゃないかと思いました。
環境変数を無理やり設定する env コマンドでなんとかやれないかと思ったのがこれ:
#!/bin/zsh env CUDDLEFISH_ROOT=/opt/addon-sdk PYTHONPATH=/opt/addon-sdk/python-lib python2 ./activate.py
activate.py っていうのは、一番上の python のコードです。
これを実行してみると、Welcome がでました。
成功です。
ファイルはここ参照で。