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 が無かった為、これをインストールします。
git でインストールします。 asdf 自体は ~/.asdf/bin/asdf にインストールされます。
Amazon Linux 2023 のデフォルトシェルは bash です。 ~/.bashrc へ以下のように設定を追記します。
Amazon Linux 2023 へログインし直して必要な設定が反映されることを確認します。 asdf --version を実行してバージョン情報が表示されればインストールは完了です。
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 へ以下のように設定を追記します。
direnv --version を実行してバージョン情報が表示されればインストールは完了です。
uv のインストール¶
以下を実行してインストールします。
uv をインストールすると自動的に ~/.bashrc へ以下が追記されました。
Amazon Linux 2023 へログインし直して必要な設定が反映されることを確認します。 uv --version を実行してバージョン情報が表示されればインストールは完了です。
Python のインストール¶
asdf の 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 をインストールしてみます。
インストールが完了したら Python 3.11.10 がグローバルに利用されるように設定します。
実際の作業ログは以下です。 asdf global python [VERSION] の前後で asdf list を実行することにより、Python バージョンの横に * マークが付与され、グローバルに利用される Python バージョンが変更されたことが分かります。
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」します。