LoginSignup
0
0

More than 3 years have passed since last update.

CentOS 7のpython 2.7にgsutilを入れて動かす

Posted at

前提

  • OSデフォルトのpythonを使う
  • 極力最小限の手間で実現出来る
    • pyenvとか使わない
  • システム側には手を入れず、ユーザー側だけでどうにかする
    • 端的に表現すると sudo なしで実現可能である
  • Dockerは使わない
  • EPELだけはOK牧場
    • pip を使うため。これだけは許して
  • gsutilでproxyが使えることが必須
    • これのせいで、こんな記事を書く羽目に

結論

sudo yum install python-pip

pip install --user --upgrade "setuptools<45"
pip install --user wheel
pip install --user gsutil

何にハマったのか

まず、python2でどうにかしようとした。gsutilはpython2を未だサポートしているから。しかし、単に pip install --user gsutil するとうまくいかない。結論から言うとCentOS 7のpython2の setuptoolsが古すぎてconfigparser/zippパッケージの最新版をうまくインストール出来ていなかったからだった。これに気がつくのに時間がかかった。

python2で躓いたので、当然のことながらpython3でやってやろうじゃないか、ということに。今度は、すんなりいくように見えた。yumでpython3を入れて、pipでgsutilを入れるだけ。実際インストールはうまく出来て、gsutilも叩けるようになった。しかし今度はproxyの設定をするとTraceが出る(正確に言うと、環境変数でproxyを設定していたのだが、それが原因だと気がつくのに相当時間を要した)。たどり着いたのはこのIssue:

Openだった。絶望した。クラウド使っている人がproxyなんて小学生までだよねー、っていう感じ?はい、わかりますよ。

python2に戻り、ちゃんとエラーメッセージと向き合って、解決策にたどり着いた。このために4時間くらい消し飛んだ。

何故こんな縛りプレイをするのか

  • 実際の運用環境では古いバージョンを使わざるをえないことが多々あるわけです
    • 最新のものとかバンバン入れるとサーバー自体の運用・管理がしんどくなるわけです
    • yumコマンドで入るものオンリー、かつrepoはbase/updates/EPEL以外は許容しないのです
  • DockerはCentOS 6では厳しいのです
    • 先にCentOS 7のサーバーでやっているが、同じことをCentOS 6のサーバーでもやらなきゃいけない
0
0
0

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
0
0