Amazon Linux 2023 へ asdf / direnv / uv をインストールして Python 環境を構築する
Amazon Linux 2023 へ以下をインストールし、Python 実行環境を整える手順をメモしておきます。
内容は以前に Ubuntu ベースで記載した Ubuntu 24.04LTS に asdf + uv + direnv で Python 環境を構築する とほぼ同じです。
検証環境¶
Amazon Linux 2023 は ARM 版の t4g.micro インストールを利用しました。
対象 | バージョン |
---|---|
Amazon Linux | 2023.6.20241031 |
asdf のインストール¶
asdf 公式ドキュメントの Getting Started によると asdf は curl と git に依存しているようです。 Amazon Linux 2023 にはデフォルトで curl はインストールされていますが、git が無かった為、これをインストールします。
dnf -y install git
git でインストールします。 asdf 自体は ~/.asdf/bin/asdf
にインストールされます。
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Amazon Linux 2023 のデフォルトシェルは bash です。 ~/.bashrc
へ以下のように設定を追記します。
cat << 'EOF' >> ~/.bashrc
# asdf
. "$HOME/.asdf/asdf.sh"
. "$HOME/.asdf/completions/asdf.bash"
EOF
Amazon Linux 2023 へログインし直して必要な設定が反映されることを確認します。 asdf --version
を実行してバージョン情報が表示されればインストールは完了です。
# asdf --version
v0.14.1-f00f759
direnv のインストール¶
以下を実行してインストールします。 今回は ARM アーキテクチャベース環境である為、direnv のバイナリは ARM 版を利用します。
curl -L https://github.com/direnv/direnv/releases/download/v2.35.0/direnv.linux-arm64 -o /usr/local/bin/direnv
chmod 755 /usr/local/bin/direnv
~/.bashrc
へ以下のように設定を追記します。
cat << 'EOF' >> ~/.bashrc
# direnv
export EDITOR=vim
eval "$(direnv hook bash)"
EOF
direnv --version
を実行してバージョン情報が表示されればインストールは完了です。
# direnv --version
2.35.0
uv のインストール¶
以下を実行してインストールします。
curl -LsSf https://astral.sh/uv/install.sh | sh
uv をインストールすると自動的に ~/.bashrc
へ以下が追記されました。
. "$HOME/.cargo/env"
Amazon Linux 2023 へログインし直して必要な設定が反映されることを確認します。 uv --version
を実行してバージョン情報が表示されればインストールは完了です。
# uv --version
uv 0.4.29
Python のインストール¶
asdf の Python プラグインをインストールします。
asdf plugin add python
Python をビルドする際に必要になるソフトウェアを事前にインストールしておきます。 必要なソフトウェアは pyenv のドキュメントである Suggested build environment の Amazon Linux 2 セクションを参考にしました。
dnf -y install \
bzip2 \
bzip2-devel \
gcc \
libffi-devel \
make \
openssl-devel \
patch \
readline-devel \
sqlite \
sqlite-devel \
tk-devel \
xz-devel \
zlib-devel
asdf で Python 3.11.10 をインストールしてみます。
asdf install python 3.11.10
インストールが完了したら Python 3.11.10 がグローバルに利用されるように設定します。
asdf global python 3.11.10
実際の作業ログは以下です。 asdf global python [VERSION]
の前後で asdf list
を実行することにより、Python バージョンの横に *
マークが付与され、グローバルに利用される Python バージョンが変更されたことが分かります。
# asdf list
python
3.11.10
# asdf global python 3.11.10
# asdf list
python
*3.11.10
venv 環境を作成するスクリプト¶
プロジェクトディレクトリを作成するごとに「Python 用仮想環境を作成し」「direnv 用の設定ファイルを配置する」のは面倒ですので、この作業を簡略化するスクリプトを用意しておきます。
cat << 'EOF' > /usr/local/bin/venv
#!/bin/sh
uv venv
echo 'source .venv/bin/activate' > .envrc
direnv allow
EOF
chmod 755 /usr/local/bin/venv
新規に作成したディレクトリへ移動し、以下のように作成したスクリプトである venv
を実行すると仮想環境を作成します。 また、direnv によって「該当ディレクトリへ移動したら自動的に Python 仮想環境を Activate」します。
[~]# mkdir work
[work]# cd work
[work]# venv
Using CPython 3.11.10 interpreter at: /root/.asdf/installs/python/3.11.10/bin/python
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
direnv: loading ~/work/.envrc
direnv: export +VIRTUAL_ENV +VIRTUAL_ENV_PROMPT ~PATH
反対に「該当ディレクトリの外へ移動した場合は自動的に Python 仮想環境を Deactivate」します。
[work]# cd
direnv: unloading
[~]#