pyenvを用いてpython3環境を整える

今回はpyenvを用いてpython3の環境を整える手順について順をおって見ていきます。

最近、新たにlinuxの環境を整える必要があり、その時にpython3を使用する必要がありました。
linuxにおいて、デフォルトでインストールされているpythonのはバージョン2.x系のものが多いのではないでしょうか。
(私が最近使用したubuntu16.04では、python2.7がデフォルトで入っていました。)

そこで、自分の備忘録もかねてpyenvを用いてpython3の環境を整える手法について書き記しておきます。

gitを導入する

pyenvはgit経由で取得します。
おそらく、多くの方はすでにgitのインストールは済んでいるのではないかと。
すでにgitをインストールしている方は飛ばしてください。

$ sudo apt-get install git

githubからpyenvのリポジトリをcloneする

先ほど導入したgitを用いて、pyenvのリポジトリをcloneします。

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

pyenvへのパスを通す

下記コマンドでpyenvへのパスを通します。
~/.bashrcの末尾に数行の設定を追加するコマンドです。
わかる方は、直接エディタで~/.bashrcを編集しても良いでしょう。

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc

ちなみに、macの方は~/.bashrcではなく~/.bash_profileになります。

上記コマンドを打ち終えたら、以下コマンドで変更を加えた~/.bashrcをサイド読み込みます。

$ source ~/.bashrc

pyenvでインストールできるpythonのバージョンを確認する

次に、pyenvを用いてインストールできるpythonのバーションを確認します。

記コマンドを打ち終えたら、以下コマンドで変更を加えた~/.bashrcをサイド読み込みます。

$ pyenv install -l

上記コマンドをタイプすると、現在インストールできるバージョンの一覧が出力されます。

...
3.6.8
3.7.0
3.7-dev
3.7.1
3.7.2
3.7.3
3.8-dev
3.9-dev
...

python3をインストール

先ほどの出力結果から、どのpythonをインストールするか選びます。
ここでは、3.7.3をインストールしてみます。

$ pyenv install 3.7.3

みなさんのubuntuで、上手くいきますように。
ちなみに私は以下のようなエラーに遭遇しました。

pyenvを用いてpython3をインストールする際のエラー

私の環境がPVSサーバ上のminimumなubuntuだったためか、色々ライブラリがないと怒られました。

普通のubuntuでは、エラーなくいけるのでは?ないでしょうか。
あまりにもエラーが多かったので、ページ最下部に遭遇したエラーと対処法をまとめました

みなさんがこのようなエラーに遭遇しませんように。

デフォルトで使用するpythonをシステムのものからpython3に切り替える

いかコマンドで、使用するpythonをシステムのデフォルトから先ほとインストールしたpython3に切り替えます。

$ pyenv global 3.7.3

ちなみに、切り替えたpython3からシステムデフォルトのpythonに戻す時は、
以下のコマンドで戻すことができます。

$ pyenv global system

python3環境の完成!

一度、以下コマンドをタイプしてちゃんとpython3が使えるかのチェックを行いましょう。

$ python

無事に上手くいきましたか?
この次は、neovimを入れる。といった感じです。

pyenvでのpython3インストール時に生じるエラー対処法

zipimport.ZipImportError: can't decompress data; zlib not available

zlibがないと怒られた場合、

$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.X.X

CFLAGSを立ててあげる。

その他、私の場合PVSサーバ上のminimumなubuntuだったため、色々ライブラリがないと怒られました。

その1
> configure: error: no acceptable C compiler found in $PATH
gccがない。

$ sudo apt-get install gcc

その2
> zipimport.ZipImportError: can’t decompress data; zlib not available
zlibが使えない。

$ sudo apt-get install zlib1g-dev

その3
> ModuleNotFoundError: No module named ‘_ctypes’
libffiを入れる。

$ sudo apt-get install libffi-dev

その4(そろそろ勘弁してほしい。。。)
> WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
> WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
> ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

$ sudo apt-get install libbz2-dev libreadline6-dev

OpenSSLのエラーについては、pyenvのgitページのissueに書いてある手順を参考にする。
はじめにこちらのページを上から実行し、opensslを入れる。
途中、各々のユーザー名に変更する箇所と、~/.bashrc末尾に追加記述する必要あり。
次に以下コマンド。

$ CFLAGS=-I$HOME/openssl/include \
LDFLAGS=-L$HOME/openssl/lib \
SSH=$HOME/openssl
$ pyenv install 3.7.3

これで、、、で・き・な・い!

その5 最終的に、、、
gitのissueページに乗っていた手順を参考に、以下コマンドでpython3.5.3(当初予定していた3.7.3よりも前のバージョン)を入れたところ、すんなり入りました。

$ CFLAGS=-I/usr/include/openssl \
LDFLAGS=-L/usr/lib \
pyenv install -v 3.5.3

めでたしめでたし。

以上、pyenvを用いてpython3環境を整える方法についてでした。
ではでは。