1. 環境
Ubuntu 22.04
2. 必要なパッケージのインストール
Ubuntu 22.04 に pyenv をインストールする前に、必要なパッケージをインストールします。
必要なパッケージに関してはpyenvのwikiに載っています。
https://github.com/pyenv/pyenv/wiki#suggested-build-environment
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
3. pyenv のインストール
今パソコンに入っているPythonのバージョンがなんであれ、直接GitHubからpyenvを取ってきます。
ホームディレクトリ直下の.pyenvの中にインストールします。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
以下のpyenvのREADMEの通り、セットアップしていきます。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
ちなみに3つ目で~/.bashrc
にeval "$(pyenv init - bash)"
を追加していますが、これはまずpyenv init - bash
が実行され、
PATH="$(bash --norc -ec 'IFS=:; paths=($PATH);
for i in ${!paths[@]}; do
if [[ ${paths[i]} == "''/home/hoge/.pyenv/shims''" ]]; then unset '\''paths[i]'\'';
fi; done;
echo "${paths[*]}"')"
export PATH="/home/hoge/.pyenv/shims:${PATH}"
export PYENV_SHELL=bash
source '/home/hoge/.pyenv/completions/pyenv.bash'
command pyenv rehash 2>/dev/null
pyenv() {
local command=${1:-}
[ "$#" -gt 0 ] && shift
case "$command" in
activate|deactivate|rehash|shell)
eval "$(pyenv "sh-$command" "$@")"
;;
*)
command pyenv "$command" "$@"
;;
esac
}
上記のような出力が得られるのですが、これらを動的に実行するためにevalが用いられます。
次に以下も実行しておきます。これもpyenvのREADMEに載っている手順です。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init - bash)"' >> ~/.profile
cho 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init - bash)"' >> ~/.bash_profile
.profileや.bash_profileは、システムログイン時に実行されるログインシェルが実行する設定ファイルなので、例えばデスクトップからターミナルを開いて使う場合は.bashrcしか実行されず、.profileや.bash_profileへのコマンドの追加は不要です。
ただし、以下のコマンドでpyenvが実行できるかは確認しておきましょう。
pyenv --version
また、もしPythonのバージョンを切り替えるだけならpyenvだけで十分です。以下のgifで使い方を参照してください。
4. pyenv-virtualenvのインストール
pyenvだけだと様々なPythonのバージョンを切り替えることはできますが、同じバージョンのPythonを複数の仮想環境で実行することができません。そこでpyenv-virtualenvをインストールします。
こちらもpyenv-virtualenvのREADMEにセットアップ方法が記載されていますが、以下でも説明します。
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
exec "$SHELL"
最後にインストールが成功したか確認してください。
pyenv virtualenvs
5. Python のバージョンと仮想環境のセットアップ
(1) Python のインストール
pyenv を使って Python をインストールします。
pyenv install 3.10.12
pyenv install 3.9.18
どのバージョンがインストール可能かは、次のコマンドで確認してください。
pyenv install -l
たくさんバージョンが出てくるので、欲しいメジャーバージョンが決まっているならpyenv install -l | grep " 3.6."
のようにすれば絞りやすい。
(2) 仮想環境の作成
Python 3.10.12 を使用してchicken_nugget
という仮想環境を作成します。
pyenv virtualenv 3.10.12 chicken_nugget
作成した仮想環境の確認:
pyenv virtualenvs
(3) 仮想環境の有効化
仮想環境を有効化するには、以下を実行します。
pyenv activate chicken_nugget
特定のプロジェクトフォルダで仮想環境を自動適用するには、次のようにします。
pyenv local chicken_nugget
どちらも特定の仮想環境を有効化するコマンドですが、前者は現在のシェルセッションでのみ有効化するコマンドなので、ターミナルを閉じたりすると仮想環境はそこで終了するのに対して、後者はカレントディレクトリに仮想環境をセットするので、そのディレクトリに戻ってくれば自動で仮想環境が有効化されます。コマンド実行後ディレクトリ内に.python-version
というファイルが生成され、中身を見ると
chicken_nugget
のようにシンプルに仮想環境の名前が書いてあると思います。pyenvはこの情報をもとに指定した仮想環境を有効化します。
6. その他
仮想環境を消したい
pyenv uninstall chicken_nugget
pyenv localを解除したい
pyenv local --unset