GAE/Python セットアップハマったところメモ

GAE/Python にチャレンジしてみているのだが、そもそもセットアップに猛烈にハマったのでメモしておく。

gcloud コマンドのインストール

最終的には以下の通りだった。事前に XcodeXcode Command Line Tools のインストールは終わっている前提。

$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
$ brew cask install google-cloud-sdk
$ vim ~/.zprofile
----------
if which gcloud > /dev/null; then
  source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc'
  source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc'
fi
----------
$ gcloud init

Mojave で Homebrew からの Google Cloud SDK インストールがコケる

brew cask install google-cloud-sdk したら zlib が見当たらないとか言われて失敗する。Mojave からはヘッダファイルが別のpkgに分離されたらしく、Command Line Tools とは別途インストールが必要となったらしい。

stackoverflow.com

もし、これを実行する前に Homebrew から Python2 を入れていた場合は再インストールが必要となる。

$ brew reinstall python2

関連設定を読み込ませる必要がある

Google Cloud SDK が定義するパス変数などがファイルに定義されているので、シェルの起動時に読み込ませる必要がある。インストール時にも「設定しろよ〜」って出てくるけど、これをやってなかったので dev_appserver.py がパス通ってなくて激しく詰んだ。

これに限らず、出てきた説明を流しちゃった場合は brew cask info google-cloud-sdk で再確認できる。

ディレクトリごとに Google Cloud SDK の設定を切り替えたい

プライベートの物と会社の物が混在しているマシンで、Google Cloud SDK の設定を切り替えたいということがあると思う。gcloud コマンドにもプロファイルの仕組みはあるが、設定ファイルに書き込まれてシェルを超えた設定になってしまうので、事故が起こりそうで大変不安な作りになっている。

CLOUDSDK_CONFIG という環境変数で、Google Cloud SDK の設定ディレクトリ自体を切り替えることはできるので、この環境変数で切り替えられるよう、zsh のフック機能で対応してみた。

autoload -Uz add-zsh-hook

function chpwd_gcloud_config() {
  pd=`pwd`/
  if [[ $pd =~ $HOME/Working/my_company/.* ]]; then
    export CLOUDSDK_CONFIG=$HOME/.config/gcloud_my_company
  else
    unset CLOUDSDK_CONFIG
  fi
}

add-zsh-hook chpwd chpwd_gcloud_config

これで、 ~/Working/my_company 以下にいる場合は設定ディレクトリが ~/.config/gcloud_my_company に切り替わり、それ以外の場合はデフォルトの設定が使用される。

…って今 direnv ってのもあるんですね。

設定切り替え対象のディレクトリを追加した場合は、そのディレクトリに移動して gcloud init コマンドを打つ必要がある。