読者です 読者をやめる 読者になる 読者になる

activate がエラって動かない不具合を修正してみた

Jetpack Firefox Addon

前のエントリで、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 がでました。
成功です。

ファイルはここ参照で。