Skip to content

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
[~]#