pyenv 環境で Google Cloud SDK をインストールする
Google Cloud SDK は Python2 系しか対応しておらず、しかもだいぶ古いまま放置されているようで、pyenv (+virtualenv) 環境下でインストールを試みると色んな所がぶっ壊れる。
やりたいこと
pyenv virtualenv 2.7.12 gcloudsdk
で作成した Python2 の環境の下に Google Cloud SDK をインストールしたい。システム環境を汚染してほしくない。
問題点
StackOverflow の質問 によると、
$ export CLOUDSDK_PYTHON=$(which python2)
$ ./install.sh
とすれば動くらしいが、勿論 pyenv 環境だとうまくいかない。
$(which python2)
を、作成した環境に合わせて /Users/keisuke.nakata/.pyenv/versions/gcloudsdk/bin/python2
などとして直接 pyenv の Python 実行環境を読みに行かせてもダメ。
(ImportError: No module named platform
で怒られる。Python のライブラリをうまく読みにいけていないっぽい)
解決への道のり
そこで、zsh + virtualenv環境でGoogle Cloud SDKをインストール - dackdive's blog を参考に、直接 Python の実行環境を指定してインストールスクリプト類を叩きに行くことにする。
以下では、公式からダウンロードして解凍した google-cloud-sdk/
を、仮に /Users/keisuke.nakata/bin/google-cloud-sdk/
に置いたものとして話をすすめる。
まず、Google Cloud SDK を実行したい Python 実行環境のパスを設定する:
export CLOUDSDK_PYTHON=/Users/keisuke.nakata/.pyenv/versions/gcloudsdk/bin/python2
上記は ~/.bash_profile
あたりにでも書いておけばよい。
そして、 install.sh
を叩きたい。こいつを叩こうとするとハマったので、内部で実行しているスクリプトを直接叩きに行く:
$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/bin/bootstrapping/install.py
エラーが出ずに、色々聞かれ始めれば OK (統計情報送っていい?とか、デフォルトアカウントは?とか、そういうやつ)
終わったら、一旦シェルを再起動。
次に、 gcloud init
的なものを実行したい。しかし、ここでもまたハマるので、こいつも直接叩きに行く:
$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/lib/gcloud.py init
ブラウザが立ち上がって認証を求められるはず。
ここまでくれば、後は gcloud
コマンドにエイリアスをかければよい。~/.bash_profile
あたりに、
alias gcloud="$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/lib/gcloud.py"
alias dev_appserver="$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/bin/dev_appserver.py"
を追記 (して source
)。もしも dev_appserver
以外のコマンドも実行したい場合は、同じようにエイリアスを張ればOKだと思う。
ローカルに AppEngine の開発サーバを立ち上げてみる
(もともとこれをやりたいために Google Cloud SDK が欲しかった)
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
cd python-docs-samples/appengine/standard/flask/hello_world
pip install -t lib -r requirements.txt # flask は AppEngine に含まれていないので、lib/ 以下に配置しておく必要がある
dev_appserver $PWD
で、
INFO 2017-11-06 12:53:51,688 devappserver2.py:116] Skipping SDK update check.
INFO 2017-11-06 12:53:51,841 api_server.py:313] Starting API server at: http://localhost:62371
INFO 2017-11-06 12:53:51,844 dispatcher.py:226] Starting module "default" running at: http://localhost:8080
INFO 2017-11-06 12:53:51,849 admin_server.py:116] Starting admin server at: http://localhost:8000
みたいなログが表示されたらブラウザで localhost:8000
に飛べばローカルで AppEngine の開発サーバが立ち上がっている。
なんか色々古いが、たぶん問題なく動いている。
副作用
補完が効かない。
参考資料
- zsh + virtualenv環境でGoogle Cloud SDKをインストール - dackdive's blog
- python - Is there any way to use gcloud with python3? - Stack Overflow
- Using the Local Development Server | App Engine standard environment for Python | Google Cloud Platform
- Download the SDK for App Engine | App Engine standard environment for Python | Google Cloud Platform
Author And Source
この問題について(pyenv 環境で Google Cloud SDK をインストールする), 我々は、より多くの情報をここで見つけました https://qiita.com/keisuke-nakata/items/0255104b7f807a0e499f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .