Ubuntu22にPythonをインストール(pyenvとvenvを使う)
環境
-
OS標準インストールのPython3は、OSを安定させるためにもむやみなアップグレードやパッケージ追加を避けたい。
Pythonの標準機能であるpyenvとvenvを使いこなそう。
pyenvを用いると、指定した特定のバージョンのPython実行環境を導入することができ、さらに複数のバージョンをそれぞれ異なるディレクトリに収納して切り替えることができるようになる。これにより、プロジェクトごとに適したバージョンの実行環境を用意することができる。
venvは、もともと「virtualenv」として知られていた外部のツールがPython 3.3で標準として取り込まれたもの。
シェル上で「python3 -m venv 環境名」という書式で新しい環境を構築することができ、環境名と同じ名前のディレクトリが新たに作成される。当該環境上でpipなどを使ってパッケージを導入すると、他の環境には影響を与えることなくその環境でのみパッケージを利用できるようになる。
複数のプロジェクトが異なるパッケージを利用しており、それらが競合して同時に利用するのに不都合な場合などに、プロジェクトごとに独立した環境を簡単に用意することができる。
pyenvをインストールする
Mac、Windowsは、公式ドキュメントの手順に従うといいが、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に戻すときは
$ 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
以上