こんにちは、自由になりたいデータサイエンティストです。
みなさん!Cloud Shell使ってますか?
私はPython開発するときは検証なら「Google Colaboratory」、実開発なら「Cloud Shell」を使っています。
Cloud Shellは以下の点が魅力です。
- 環境構築の手間がかからないこと
- 複数デバイスから簡単にアクセスできること
- GCP上で動くので連携が簡単
- エディタが充実している
- 無料!
Google様様ですね。
さて、今回はCloud ShellでPyArrowがインストールできない問題の解決方法をご紹介します。
解決策は簡単で、
pip(pip3)をアップグレードする
です!
詳しく見ていきましょう。
PyArrowってなに?
そもそもPyArrowってなんでしょうか?
明示的にpyarrowを使う人は少ないと思いますし、明示的に呼び出している人はご存知と思いますので、この項目は飛ばして頂いて大丈夫です(笑)
では、PyArrowが要求されるシーンはどんなものでしょうか?
ずばり、BigQuery APIを利用するときなんです!
正確には、BigQueryのPython APIを利用して、クエリ結果をPandas DataFrameとして得る部分で要求されます。
普通にBigQuery APIやPandasをimportするだけなら要求されないので、いきなり怒られるんですよね。。
怒られる場面からも想像がつくように、PyArrowはSQLと関連が深いライブラリとなります。
こちらの説明がわかりやすいのですが、列形式のデータであるParquetを扱うことができるようです。
ここから想像するに、BigQueryからのレスポンスがParquet形式で得られて、それを表形式に変換するために利用されているのではないでしょうか。
Cloud Shellのデフォルト環境
そもそもCloud ShellにプリインストールされているPython環境はどうなっているのか調べてみました。
コマンド | 結果 |
python -V | 2.7.16 |
python3 -V | 3.7.3 |
pip -V | 18.1 |
pip3 -V | 18.1 |
デフォルトがpython2ですし、3のバージョンも古いです。
(記事執筆時点で3.9が最新です。)
さらに、pip3のバージョンが18.1(最新は21.4)となっています。
さて、なぜ今回PyArrowのインストールpip3 install pyarrow
が上手くいかないかというと、まさにこのpip3のバージョンが古いからです。
PyArrowのインストールには、19以上のバージョンが必要です。
pip3のアップグレード
上記の理由から、pip3をアップグレードしてあげましょう。
pip3 install -U pip
上記の方法だとpip3のバージョンが最新になります。
しかし下記の警告が発生します。
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
将来的にこのアップグレード方法は使えなくなるかも、ということみたいです。
推奨されている方法はこちらです。
python3 -m pip install -U pip
ただし、これをするとpip3ではなくpipとしてインストールされます。
Python2系のpipを使うことはほぼないと思いますが、一応気にしておきたいですね。
PyArrowのインストール
pip3のアップグレードが完了したところで、再度PyArrowのインストールを行います。
pip3 install pyarrow
以上で設定は完了です!
お疲れさまでした。
コメント