Google Cloud SDK ドキュメント | Cloud SDK | Google Cloud Platform
これに従ってインストールを進めていくと…
$ ./install.sh
Welcome to the Google Cloud SDK!
Traceback (most recent call last):
File "/Users/admin/Downloads/google-cloud-sdk/bin/bootstrapping/install.py", line 8, in <module>
import bootstrapping
File "/Users/admin/Downloads/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 9, in <module>
import setup
File "/Users/admin/Downloads/google-cloud-sdk/bin/bootstrapping/setup.py", line 27, in <module>
from googlecloudsdk.core.util import platforms
File "/Users/admin/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/util/platforms.py", line 18, in <module>
import platform
ImportError: No module named platform
このようなエラーが。
platform
はPythonに付属のモジュールなので、無いわけがありません。
$ python
Python 2.7.13 (default, Jun 25 2017, 15:41:19)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>>
このように、普通にPythonを起動するとちゃんとインポートできていることが確認できます。
というわけで、install.sh
の中でPythonのオプションかなにかが弄られているのだろうと思い、install.sh
を見てみると…
case :$CLOUDSDK_PYTHON_SITEPACKAGES:$VIRTUAL_ENV: in
:::) # add -S to CLOUDSDK_PYTHON_ARGS if not already there
case " $CLOUDSDK_PYTHON_ARGS " in
*" -S "*) ;;
" ") CLOUDSDK_PYTHON_ARGS="-S"
;;
*) CLOUDSDK_PYTHON_ARGS="$CLOUDSDK_PYTHON_ARGS -S"
;;
esac
unset CLOUDSDK_PYTHON_SITEPACKAGES
;;
案の定、-S
オプション付きで実行されていることがわかりました。
このオプションが追加されていたせいでsite
モジュールが読み込まれず、それが原因でplatform
の場所がわからなくなっているのが原因のようです。
ところで、このスクリプトの上の方を見てみると、
# CLOUDSDK_ROOT_DIR (a) installation root dir
# CLOUDSDK_PYTHON (u) python interpreter path
# CLOUDSDK_PYTHON_ARGS (u) python interpreter arguments
# CLOUDSDK_PYTHON_SITEPACKAGES (u) use python site packages
とあり、CLOUDSDK_PYTHON_SITEPACKAGES
環境変数を設定すれば良さそうということがわかりました。
$ CLOUDSDK_PYTHON_SITEPACKAGES=1 ./install.sh
というようにすれば、インストールに成功します。あとはこの環境変数を.bash_profile
あたりに書いておくのだけ忘れずに。