やりたいこと
BigQueryをローカルから操作する必要がありました。
BigQueryを操作するbqコマンド、CloudStorageを操作するgsutilコマンド、GCEやGKE等を操作するgcloudコマンドをローカルで使うにはGoogle Cloud SDKが必要です。
CloudSDKを使用するにはPythonが必要で、サポート・推奨されているバージョンは以下の通りです。
公式ドキュメントより
サポートされているバージョンは Python 3(3.5~3.8、3.7 を推奨)と Python 2(2.7.9 以降)です。
私が使用するMacにはデフォルトで入っているPython2系しかありませんので、推奨されている Python3.7を使えるようにしようと思います。
今回はPythonの環境構築のみで、別の記事にて、そのあとのCloudSDKの環境構築についてもまとめていきます。
環境
- MacOS 10.15 Catalina
- Homebrew 3.3.7
Python3系環境構築
今回はpyenvを使用し、Python2系と3系(今回は3.7)を共存させることにします。複数のpythonバージョンの共存については、こちらの記事がわかりやすかったです。
現在のPythonのバージョン確認
$ python -V
Python 2.7.16
現在はデフォルトの2系が入っています。
pyenvのインストール
homebrewでpyenvをインストールすることができます。homebrewのインストールはこちらの記事などを参考にしてください。
$ brew install pyenv
インストールが完了したら、pyenvのバージョンを確認してみます。
$ pyenv -v
pyenv 2.2.3
pyenvのパスを通します。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc
pyenvでPython3.7をインストール
現在pyenvで切り替え可能なPythonのバージョンを確認します。
$ pyenv versions
* system (set by /Users/user/.pyenv/version)
現在はまだデフォルトのバージョンのみですね。
pyenvでインストールできるバージョンの一覧は以下のコマンドで確認できます。
$ pyenv install --list
今回はPython3.7.8をインストールしてみましょう。
$ pyenv install 3.7.8
私の環境ではインストールに4分ほどかかりました。
pyenvで切り替え可能なPythonのバージョンを確認してみましょう。
$ pyenv versions
* system (set by /Users/user/.pyenv/version)
3.7.8
3.7.8が使えるようになりました。
ですが、現在適用されているのはPython 2.7.16のままですね。
$ python -V
Python 2.7.16
インストールしたPython3.7.8に切り替えてみましょう。
$ pyenv global 3.7.8
$ pyenv versions
system
* 3.7.8 (set by /Users/user/.pyenv/version)
pyenv上では3.7.8に切り替わっていますね。
ローカルのPythonバージョンを確認してみます。
$ python -V
Python 2.7.16
切り替わっていない。。。
調べていると、どうやら.zshrcの記述が不足していることが原因のようでした。
次の記述を.zshrcに追加します。
$ echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
$ source ~/.zshrc
再度ローカルのPythonバージョンを調べると…
$ python -V
$ Python 3.7.8
無事切り替わりました!
コマンドまとめ
# pyenvで特定のバージョンのPythonをインストールする
$ pyenv install 3.7.8
# 使用するPythonのバージョンを切り替える(インストールしたものの中から選択可能)
$ pyenv global 3.7.8
# pyenvでインストール済みのバージョン、現在適用中のバージョンを確認する
$ pyenv versions
system
* 3.7.8 (set by /Users/user/.pyenv/version)