Cloud9でpipが使えない
知り合いとの話の流れでPythonでGUIを作ろうと思い、環境構築をする必要がない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