LoginSignup
19
13

More than 5 years have passed since last update.

Google Cloud SDKのセットアップはどこまでWindowsユーザーを苦しめれば気が済むのか?

Last updated at Posted at 2018-08-22

モチベーション

  • GoogleAppEngine/Goのapi_version:1がdeprecateされる
  • コードベースをgo1.6からgo1.8にしたい
  • ローカルのSDKバージョンではapi_version:1.8を使えない
  • つまり、あげざるをえない(;´Д`)
アップデート前
>gcloud version
Google Cloud SDK 191.0.0
app-engine-go
app-engine-python 1.9.67
beta 2017.09.15
bq 2.0.29
core 2018.02.23
gcloud
gsutil 4.28
アップデート後
Google Cloud SDK 213.0.0
app-engine-go
app-engine-python 1.9.74
beta 2018.07.16
bq 2.0.34
cloud-datastore-emulator 2.0.1
core 2018.08.17
gcloud
gsutil 4.33

gcloud components update コマンドでアップデートOKだぜb」的なメッセージを信じてEnterしたけれど、後述のエラーダンプを食らって消沈しました..。

SDK のinstallでつまる

環境

  • Windows 10 Pro, 64bit Version 1803 ビルド 17134

発生した問題

UnicodeDecodeErrorってPythonのエラーなんですね。ぼくがやりたいのはSDKのインストールであってPythonのデバッグではないんですね
UnicodeDecodeError: 'ascii' codec can't decode byte ....

サクッとネットで解決策がのっていて、 エンコーディングをutf-8にすればOK とのことらしい。先達の叡智!ひゃっほ~!

UnicodeDecodeError: 'utf8' codec can't decode byte ....

ほほう・・・?

SDKインストール手順

※前準備 - PCにインストールされていたPython2.7をアンインストールしました

  • SDKのセットアップを実行しbundledpythonをインストールする
    • セットアップは失敗します
  • PowerShellを使って、bundledpythonを使用させるための環境変数を設定する
  • システム環境変数のGUIから追加したほうが確実
CLOUDSDK_PYTHON="E:\gcloud\google-cloud-sdk\platform\bundledpython\python.exe"
// E:\gcloud\はセットアップ時に指定したフォルダーです

【重要】Pythonの初期エンコーディングをasciiからshift-jisに変更する

sitecustomize.py
import sys
sys.setdefaultencoding('shift-jis')

インストールを実行

  • E:\gcloud\google-cloud-sdk\install.bat をシェルから実行すると、エラーなく進み、プロンプトの問い合わせを[Y]します。
  • gcloud CLI 実行時にもエンコーディング設定を反映させるため、環境変数を指定 CLOUDSDK_PYTHON_SITEPACKAGES="E:\gcloud\google-cloud-sdk\platform\bundledpython\Lib\site-packages"

補足)gcloud CLIで使用される環境変数

gcloud.cmdより
# "E:\gcloud\google-cloud-sdk\bin\gcloud.cmd"
rem <cloud-sdk-cmd-preamble>
rem
rem  CLOUDSDK_ROOT_DIR            (a)  installation root dir
rem  CLOUDSDK_PYTHON              (u)  python interpreter path
rem  CLOUDSDK_PYTHON_ARGS         (u)  python interpreter arguments
rem  CLOUDSDK_PYTHON_SITEPACKAGES (u)  use python site packages

完了!

image.png

勘所まとめ

  1. SDKセットアップをそのまま実行すると PythonのUnicodeDecodeError が出る
  2. SDKバンドルのPython2.7を正しく使わせるため、以下が必要
    1. site-packagesに初期エンコーディングをshift-jisに設定するスクリプトを配置する
    2. CLOUDSDK_PYTHON でPythonの実行パスを指定する
    3. CLOUDSDK_PYTHON_SITEPACKAGESsite-packagesのパスを指定する
  3. もう一度セットアップする
  4. CLIにパスを通す(E:\gcloud\google-cloud-sdk\bin

以上の手順により、GoogleCloudSDKのアップデートが無事に完了しました!ε-(´∀`*)ホッ

で、なにをするのが目的だったのか。。。。

19
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
13