Linux
PR

【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をセットアップしていきます。

gcczlibのインストールはそれぞれ以下のコマンドでできます。

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の ctypescffi モジュールが依存している。

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をつかっていると複数のバージョンを扱う場面がいずれ出てきます。早いうちにバージョンと仮想環境管理に慣れておくとよいと思うので、ぜひ参考にしてみてください。

えりるについて
えりる
えりる
日本のどこかに生息する平成生まれの研究者。とっても理論家と思いきや気分屋さんでもある。基本的にめんどくさがり。修士(工学)を持っている。
記事URLをコピーしました