turtlechanのブログ

無知の私がLinuxをいじりながら書いていくブログ

【Linux】pyenvのインストール

必ずしも必要なわけではないが、GoogleKeepにメモってたので書き起こしとく。

pyenvとは

Pythonのバージョンを簡単に切り替えられるようになるツールです。また、複数のバージョンのPythonを共存(インストール)させることができるようになります。

インストール

'pyenv'のインストール手順です。

pyenvをダウンロード

GitHubからホームディレクトリ(~/.pyenv)にダウンロードします。

gitコマンドを使用してダウンロードする場合は次のコマンド。

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

サブモジュールはないので、GitHub - pyenv/pyenv: Simple Python version managementに飛んで「'clone or download'→'Download ZIP'→保存→解凍→'~/.pyenv'に配置」でも可能。

'~/.pyenv'ディレクトリの中は次のようになる。

~$ ls -A ~/.pyenv/
.agignore    .vimrc        LICENSE    completions  shims                version
.github      CHANGELOG.md  Makefile   libexec      src                  versions
.gitignore   COMMANDS.md   README.md  plugins      terminal_output.png
.travis.yml  CONDUCT.md    bin        pyenv.d      test

pyenvのパス(PATH)を通す

シェルが'pyenv'を見つけられるようにパスを通します。私は'bash'を使用しているので、bash以外わかりません。ごめんなさい。

bashに'pyenv'のパスを通すには次のコマンド(~/.bash_profileに追記)。

~$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
~$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
~$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

vim等のテキストエディタで書き込んでも問題ありません。

'~/.bash_profile'の編集が終わったら、次のコマンドで適用します。

~$ source ~/.bash_profile

'pyenv'のパスが通ったか確認します。次のコマンド。

~$ pyenv --version

'pyenv'のバージョンが表示されれば、パスは通っています。

'pyenv'自体のインストールはこれで完了です。

pyenv環境にPythonをインストール

'pyenv'をインストールしただけではあまり意味がないので、'pyenv'で複数のバージョンのPythonをインストールしていきます。

依存パッケージのインストール

'pyenv'は指定したPythonをダウンロードしてきてコンパイルをするため、その際に必要になるパッケージをインストールしておきます。

Home · pyenv/pyenv Wiki · GitHubに必要なパッケージが書かれています。まとめてインストールしてしまえば問題ないでしょう。

Debian系の場合

Debian系のディストリビューションの場合は次のコマンド。

~$ sudo apt-get -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

すでにインストールされているパッケージも含まれているが、気にしない。

RedHat系の場合

RedHat系のディストリビューションの場合は次のコマンド。

~$ sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel

すでにインストールされているパッケージも含まれているが、気にしない。

Pythonをインストール

次のコマンドでインストールできるPythonのバージョンが表示されます。

~$ pyenv install -l

Pythonをインストールするには次のコマンド(python 2.7.16の場合)。

~$ pyenv install 2.7.16

Pythonをインストールするには次のコマンド(python 3.6.8の場合)。

~$ pyenv install 3.6.8

Vimのビルドのことを考え、共有ライブラリを作る場合は次のコマンド。

~$ CONFIGURE_OPTS="--enable-shared" pyenv install 2.7.16
~$ CONFIGURE_OPTS="--enable-shared" pyenv install 3.6.8

pyenvでPythonのバージョン切り替え

Pythonのインストールが終わったら、バージョンを切り替えます。

pyenv環境下にインストールされているPythonの確認

次のコマンドでインストールされているPythonのバージョンを確認できます。

~$ pyenv version

ここに表示されているものから、切り替えのバージョンを指定することになります。

また、現在選択されているPythonのバージョンを確認したい場合は、次のコマンド。

~$ pyenv versions

バージョンを切り替える

切り替えるには次のコマンド。

~$ pyenv local 2.7.16
~$ pyenv global 2.7.16

'local'は現在いるディレクトリに反映、'global'は全体に反映されます。

システムのPythonに戻す場合は'system'を指定します。

~$ pyenv local system
~$ pyenv global system

Python2とPython3の両バージョンを指定する場合

'python'コマンドでPython2系、'python3'コマンドでPython3系が起動の方が、私はしっくりきます。

'python'コマンドでPython 2.7.16、'python3'コマンドでPython 3.6.8にしたい場合は、次のコマンド。

~$ pyenv global 2.7.16 3.6.8

前者が'python'コマンドに適用され、後者が'python3'コマンドに当たる訳ですね。

おわりに

私はバージョンをちょくちょく切り替えて使用するようなハッカー的な技術は持っていないので、いつもバージョンは固定したままです。pyenv入れてる意味が。。。

それはさておき、Python2系のサポートが2020年で終了するらしいですね。皆さんはすでにPython3に移行しているでしょう。私がなんとか書けるのは未だにPython2系なんですよね。どうも私は新しい物は好きだけど、その中で古い方を好むようです。