【Python仮想環境構築】pyenv+venvの開発環境の作り方【Linux】

この記事では、pyenv とvenv を使ったPythonの開発環境をLinux上に構築する方法について解説します。
pyenvとvenvって?
pyenv
は、複数の Python バージョンを簡単に切り替えられるツールです。以下のような特徴があります。
- システムの Python に影響を与えずに、任意のバージョンをインストール・管理できる。
- プロジェクトごとに異なる Python バージョンを使える。
venv
は、Python の仮想環境を作るための標準ライブラリです(Python 3.3以降に標準搭載)。仮想環境とは、ざっくり言うと「Python 本体 + pip + ライブラリ」をプロジェクトごとに独立して管理できる環境です。
pyenvとvenvを組み合わせることで、一つのパソコンで異なるPythonのバージョン、異なるバージョンのライブラリを使うことができます。
pyenvのインストール
まず、pyenvのGitHubリポジトリ から必要なファイルをとってきます。
このリポジトリのREADMEにインストール方法が記載されていますが、その方法だけだと動作しません。(罠)しかもREADMEは英語です。
以下のコマンドでリポジトリをクローンします。
git clone https://github.com/pyenv/pyenv.git
このあと起動前の事前準備としてgcc, zlib, OpenSSLをセットアップしていきます。
gcc、zlibのインストールはそれぞれ以下のコマンドでできます。
sudo apt install build-essential
sudo apt install zlib1g-dev
OpenSSL のインストールは以下のコマンドでできます。
sudo apt install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
上記コマンドでインストールされるパッケージの意味(クリックで開く)
libssl-dev
- OpenSSL(暗号化通信ライブラリ)の開発用パッケージ
- HTTPSやSSL/TLS通信を使うアプリケーションに必要。
- Pythonの
ssl
モジュールを有効にするために必要。
libbz2-dev
- bzip2 圧縮ライブラリの開発用パッケージ
.bz2
形式の圧縮ファイルの読み書きに対応。- Pythonの
bz2
モジュール用。
libreadline-dev
- コマンドラインの入力補助(履歴、カーソル移動など)を扱うライブラリ
- 対話式Pythonシェル(REPL)で便利な編集機能を提供。
libsqlite3-dev
- 軽量データベース SQLite3 の開発用パッケージ
- Python の標準ライブラリ
sqlite3
を有効にするのに必要。
curl
- データ転送ツール(HTTP/FTPなど)
- 主に他のツールやスクリプトがファイルを取得するために使う。
pyenv
のようなインストールツールが内部で使う場合がある。
libncursesw5-dev
- ターミナルUI制御用ライブラリの開発版(wide-char 対応)
curses
モジュール(ターミナルベースのUI)に必要。
xz-utils
- xz形式(.xz圧縮)のファイルを扱うツール
- Python のソースコードが
.xz
形式で配布されている場合に必要。
tk-dev
- GUIツールキット Tk の開発用パッケージ
tkinter
モジュール(GUIアプリ開発)に必要。
libxml2-dev
- XML解析ライブラリの開発用パッケージ
- XML を読み書きするアプリや Python ライブラリに使われる。
libxmlsec1-dev
- XML署名と暗号化(XML Security)用のライブラリ
- SAML やセキュアなXMLベースの通信に使用される。
libffi-dev
- Cライブラリ関数を呼び出すための FFI(Foreign Function Interface)
- Pythonの
ctypes
やcffi
モジュールが依存している。
liblzma-dev
- lzma(.xz圧縮)を使うための開発用ライブラリ
- Pythonの
lzma
モジュールを有効にするのに必要。
次に以下のコマンドで先ほど pyenv をクローンしたディレクトリに移動します。
cd pyenv
以下のコマンドでpyenvを高速化します。失敗してもpyenvは問題なく動くみたいです。
src/configure && make -C src
ここでいったん以下のコマンドでホームディレクトリに戻ります。
cd ~
最後にパスの設定をします。ホームディレクトリにある .bashrc というファイルを開いて末尾にpyenvのパス内容を追記します。
まず、以下のコマンドでvimエディタを使って.bashrcを開きます。
vi ~/.bashrc
vimの使い方はこちらの記事で少し解説しているので参考にしてみてください。
開いたら一番下まで移動して、一番下の行に以下の内容をコピペします。
export PYENV_ROOT="$HOME/pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
ここまで終えたら最後に .bashrc の変更内容を以下のコマンド適用します。
source ~/.bashrc
ここまでで pyenv が使えるになっているはずなので以下のコマンドで確認します。
pyenv --version
バージョンを表す数字が返ってきたらインストールは完了です。
pyenvを使ったPythonのインストールとバージョン管理
それでは、pyenvを使ってPythonをインストールしましょう。
以下のコマンドでインストールができます。
pyenv install バージョン番号
バージョン番号にはPythonのバージョンを表す数字が直接入ります。たとえば、Python 3.10.6をインストールしたいときは、
pyenv install 3.10.6
のようにします。
また、インストールできるバージョンを確認したいときは
pyenv install --list
で確認できます。
pyenv
でインストールしたpythonを使うときは、pythonを使いたいフォルダ内にcd
コマンドで移動してから そのフォルダ内だけでpythonを有効化します。
cd pythonを使いたいフォルダのパス
pyenv local バージョン番号
ちなみに、グローバル(全体)で使うバージョンを指定するときは
pyenv global バージョン番号
のようにします。
pyenv でインストールされているPythonのバージョンを確認するには
pyenv versions
を実行すると確認できます。
venvで仮想環境を作る
venvはPythonに標準で入っている仮想環境を作成するパッケージです。
まず、以下で仮想環境を作ります。
python -m venv venv
これでvenvというフォルダができ、仮想環境が作成されます。
ただ、これだけではまだ有効化されていません。
仮想環境を使用するときは以下で有効化します。
source ./venv/bin/activate
無効化したいときは以下で行います。
deactivate
仮想環境を有効化したらpipなどで必要なパッケージをインストールしましょう。
まとめ
この記事ではLinux上にpyenv+venvを使ったPython開発環境の構築方法を紹介しました。
pyenvとvenvを組み合わせることで、一つのパソコンで異なるPythonのバージョン、複数の環境を使うことができるのが最大の魅力だと思います。
Pythonをつかっていると複数のバージョンを扱う場面がいずれ出てきます。早いうちにバージョンと仮想環境管理に慣れておくとよいと思うので、ぜひ参考にしてみてください。