0. 概要
condaが有料化しちゃったから、同じような使い方のできるpyenvを使っていく。環境はDebian系。
windows版のpyenv-win等があるが、あれはpyenv-virtualenvが使えないからだめだ。大人しくuvを使おう。
Ubuntuでpyenv + pyenv-virtualenvを導入する手順
Ubuntuで pyenv activate XXXを使えるようにするための手順です。
pyenv activate を使うには、pyenv 本体だけでなく pyenv-virtualenv も必要です。
1. 必要なパッケージをインストール
sudo apt update
sudo apt install -y \
build-essential \
curl \
git \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
libncursesw5-dev \
xz-utils \
tk-dev \
libxml2-dev \
libxmlsec1-dev \
libffi-dev \
liblzma-dev
2. pyenvをインストール
curl -fsSL https://pyenv.run | bash
このインストーラで以下がインストールされます。
- pyenv
- pyenv-virtualenv
- pyenv-update
- pyenv-doctor
- pyenv-which-ext
3. bashの設定
~/.bashrc に以下を追加します。
cat <<'EOF' >> ~/.bashrc
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"
EOF
設定を反映します。
exec "$SHELL"
または、
source ~/.bashrc
でもOKです。
4. pyenvが使えることを確認
pyenv --version
pyenv-virtualenvも確認します。
pyenv virtualenv --version
両方ともバージョンが表示されればOKです。
5. インストール可能なPythonを確認
例えばPython 3.12系を確認する場合:
pyenv install --list | grep '3.12'
6. Pythonをインストール
例としてPython 3.12.11をインストールします。
pyenv install 3.12.11
インストール済みのPythonは以下で確認できます。
pyenv versions
7. 仮想環境を作成
Python 3.12.11を使って XXX という名前の環境を作ります。
pyenv virtualenv 3.12.11 XXX
作成された環境を確認します。
pyenv versions
例えば以下のように表示されます。
* system
3.12.11
3.12.11/envs/XXX
XXX
8. 仮想環境を有効化
pyenv activate XXX
確認:
python --version
which python
例えば以下のようなパスになっていればOKです。
/home/USERNAME/.pyenv/shims/python
現在のpyenv環境も確認できます。
pyenv version
9. 仮想環境を終了
pyenv deactivate
プロジェクトごとに自動で環境を切り替える
毎回、
pyenv activate XXX
を実行する代わりに、プロジェクトディレクトリに環境を設定できます。
例えば:
mkdir -p ~/projects/myproject
cd ~/projects/myproject
そこで、
pyenv local XXX
を実行します。
すると、
.python-version
というファイルが作成されます。
確認:
cat .python-version
XXX
以後、このディレクトリに移動すると自動的に XXX が使われます。
cd ~/projects/myproject
python --version
pyenv version
よく使うコマンド
インストール済みPython・仮想環境一覧
pyenv versions
現在使用中の環境
pyenv version
仮想環境を有効化
pyenv activate XXX
仮想環境を無効化
pyenv deactivate
ディレクトリ単位で環境を設定
pyenv local XXX
local設定を解除
pyenv local --unset
デフォルトのPythonを指定
例えばPython 3.12.11をデフォルトにする場合:
pyenv global 3.12.11
systemのPythonに戻す場合:
pyenv global system
仮想環境を削除
pyenv uninstall XXX
pyenv activate が使えない場合
以下のエラーが出る場合:
pyenv: no such command 'activate'
まず pyenv-virtualenv が存在するか確認します。
ls ~/.pyenv/plugins/pyenv-virtualenv
存在する場合は、~/.bashrc に以下があるか確認します。
eval "$(pyenv virtualenv-init -)"
確認:
grep virtualenv-init ~/.bashrc
何も表示されない場合は追加します。
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
反映:
source ~/.bashrc
その後、
pyenv activate XXX
を再度実行します。
最小手順まとめ
sudo apt update
sudo apt install -y \
build-essential \
curl \
git \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
libncursesw5-dev \
xz-utils \
tk-dev \
libxml2-dev \
libxmlsec1-dev \
libffi-dev \
liblzma-dev
curl -fsSL https://pyenv.run | bash
cat <<'EOF' >> ~/.bashrc
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"
EOF
exec "$SHELL"
pyenv --version
pyenv virtualenv --version
pyenv install 3.12.11
pyenv virtualenv 3.12.11 XXX
pyenv activate XXX
python --version
pyenv version