ギリギリジンジン

なんでもギリギリだ。

Ubuntu22にPythonをインストール(pyenvとvenvを使う)

環境

  • Ubuntu 22.04.1 LTS
  • pyenv 2.3.5
  • Python 3.10.8(venvを含む)

-

OS標準インストールのPython3は、OSを安定させるためにもむやみなアップグレードやパッケージ追加を避けたい。

Pythonの標準機能であるpyenvとvenvを使いこなそう。

pyenvを用いると、指定した特定のバージョンのPython実行環境を導入することができ、さらに複数のバージョンをそれぞれ異なるディレクトリに収納して切り替えることができるようになる。これにより、プロジェクトごとに適したバージョンの実行環境を用意することができる。

pyenvとは - 意味をわかりやすく - IT用語辞典 e-Words

venvは、もともと「virtualenv」として知られていた外部のツールがPython 3.3で標準として取り込まれたもの。

シェル上で「python3 -m venv 環境名」という書式で新しい環境を構築することができ、環境名と同じ名前のディレクトリが新たに作成される。当該環境上でpipなどを使ってパッケージを導入すると、他の環境には影響を与えることなくその環境でのみパッケージを利用できるようになる。

複数のプロジェクトが異なるパッケージを利用しており、それらが競合して同時に利用するのに不都合な場合などに、プロジェクトごとに独立した環境を簡単に用意することができる。

venvとは - 意味をわかりやすく - IT用語辞典 e-Words

pyenvをインストールする

MacWindowsは、公式ドキュメントの手順に従うといいが、Linuxの場合は別プロジェクトであるpyenv installerを使用するのがいい。

事前準備としてgitをインストールする。

$ sudo apt install git

curlをインストール

$ sudo apt install curl

任意のPythonバージョンを導入するために必要なコンパイル環境を整える。(Suggested build environmentより)

$ sudo apt update
$ sudo apt install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

インストール

バージョンを指定してインストールする場合の例としてドキュメントには以下の記述があるが、v2.2.5なんてタグはなさそうだし、タグ指定して動作するかは未確認。

$ export PYENV_GIT_TAG=v2.2.5
$ curl https://pyenv.run | bash

最新版をインストールする場合は以下の通り。

$ curl https://pyenv.run | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   270  100   270    0     0    203      0  0:00:01  0:00:01 --:--:--   203
Cloning into '/home/tokushima/.pyenv'...
remote: Enumerating objects: 1007, done.
(中略)

WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by appending
# the following to 
~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
and ~/.bashrc (for interactive shells) :

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# Restart your shell for the changes to take effect.

# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:

eval "$(pyenv virtualenv-init -)"

最後のメッセージの通りに.bashrcに設定を書き込もう。

$ cat << 'EOF' >> ~/.bashrc

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

EOF

シェルを再起動

exec $SHELL

バージョン確認

$ pyenv --version
pyenv 2.3.5
pyenvのアップデート
pyenv update
pyenvのアンインストール
$ rm -fr ~/.pyenv

あと、.bash_profileに追加した設定を消しておく。 最後にシェルを再起動。

exec $SHELL
pyenvの使い方

インストール可能なバージョンを表示する。

$ pyenv install --list
(中略)
  3.10.0
  3.10-dev
  3.10.1
  3.10.2
  3.10.3
  3.10.4
  3.10.5
  3.10.6
  3.10.7
  3.10.8
  3.11.0
  3.11-dev
  3.12-dev
(中略)

バージョン3.10.8をインストールする。

$ pyenv install 3.10.8

インストール済みの使用可能なバージョンを確認する。システムのPythonに戻すときはにsystemを指定する。

$ pyenv versions
* system (set by /home/tokushima/.pyenv/version)
  3.10.8

使用するバージョンを切り替える。

pyenv shell <version> -- select just for current shell session
pyenv local <version> -- automatically select whenever you are in the current directory (or its subdirectories)
pyenv global <version> -- select globally for your user account

プロジェクトフォルダでlocalオプションを指定するのがいいと思う。使用するバージョンを指定する。

$ pyenv local 3.10.8
$ python --version
Python 3.10.8
$ ls -a
.  ..  .python-version
$ cat .python-version 
3.10.8
venvの使い方

venv --- 仮想環境の作成 — Python 3.10.6 ドキュメント

ヘルプの表示

$ python -m venv -h

プロジェクトフォルダで仮想環境を作る。

$ python -m venv .venv
$ ls -a
.  ..  .python-version  .venv

このフォルダをVSCodeで開くと自動で反映される。

コマンドラインで仮想環境を有効にするには

$ source ./venv/bin/activate

以上