Cloud9でpipが使えない

知り合いとの話の流れでPythonGUIを作ろうと思い、環境構築をする必要がないCloud9を
利用としたが、Pythonのpipが使えなくて詰まった。


何をしようとしたか

tkinterと呼ばれるPythonで簡単なGUIを作るライブラリがあり、それを使おうと思ったが
Cloud9上に存在しなかった。
仕方ないので、pip installを使って入れようとしたが、以下の表示が出た

You are using pip version 9.0.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

要約するとpipのバージョンが低いので上げないとインストールできないとのこと
説明にある通りにアップグレードしようとすると、それ以降のpipコマンドが使用できなくなる


原因

始め、pipのあったフォルダは

$ which pip
/usr/bin/pip

となっていたが、以下の通りにアップグレードした後、whichコマンドで調べると

$ sudo pip install --upgrade pip
…略
Successfully installed pip-19.3.1
$ which pip
/usr/local/bin/pip

となっていた。
この状態になって以降、pipコマンドは何してもエラーを吐くので、初期化しました
もし初期化する場合は、コードのバックアップを取っておいた方がいい


さらなる追求

アップグレードする際に、フォルダが変わってしまい、pipが使えなくなるのは困るので
(そもそもpipを使おうと、アップグレードしたのに使えなくなるのは如何なものか)
他に原因はないのかと思い、Pythonとpipのバージョンを調べてみた。
すると、以下のような表示が出た。

$ python -V
python 3.6.8
$ pip -V
pip 9.0.3 from /usr/lib/python2.7/dist-packages (python 2.7)

聡明な皆様なら、もうお判りでしょう。
pipのバージョンを参照しているフォルダを見ると、
/usr/lib/python2.7/dist-packages (python 2.7)
というようになっている。

つまり、今使用しているPythoはPython3なのに対し、
pipはPython2を使用しようしている。
調べてみると、デフォルトの設定がPython2になっているらしい。


そして、解決へ・・・

以下のコマンドを打つ

$ sudo update-alternatives --config python

すると

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/bin/python2.7
   2           /usr/bin/python3.6

Enter to keep the current selection[+], or type selection number:

という表示が出る。
端的に説明すると、Pythonのバージョンを選ぶ画面。
今回はPython3を使用したいので、2と入力する。
これでPython3として使用できるようになる。
ただ、これだけだと実行できないことがあるので、以下のコマンドを入力する
(自分はこれ打った後、使用できるようになった)

$ hash -r

これらを行った後、pipのバージョンアップを行い、試しにnumpyをインストールしてみたが、エラーがなく普通に成功した。


終わりに

Cloud9を使って何かしらライブラリをインストールしようとして失敗した人が大勢いると思う。
今回の方法が解決の糸口になればいいなと。 その後僕は、以下のコマンドを打つまで、tkinterをインストールしようと1時間以上
費やしたことはまた別の話。

$ pip search tk