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環境を整える方法についてでした。
ではでは。