PyPI のキャッシュプロキシの devpi を使う

パッケージのインストールと devpi ユーザの作成

devpi ユーザを作り、ホームディレクトリ /home/devpi にサーバの設定やキャッシュを保存する。 root で作業する。

apt install -y python3-venv
useradd --system --create-home --home-dir /home/devpi --shell /usr/sbin/nologin devpi
mkdir -p ~devpi/{server,venv}
chown -R devpi:devpi ~devpi
sudo -u devpi python3 -m venv ~devpi/venv
sudo -u devpi ~devpi/venv/bin/pip install -U pip
sudo -u devpi ~devpi/venv/bin/pip install devpi-server devpi-web
sudo -u devpi ~devpi/venv/bin/devpi-init --serverdir ~devpi/server

サービスの登録

次のような /etc/systemd/system/devpi.service を作る。

[Unit]
Description=devpi (PyPI caching proxy)
After=network-online.target
Wants=network-online.target

[Service]
User=devpi
Group=devpi
WorkingDirectory=/home/devpi
ExecStart=/home/devpi/venv/bin/devpi-server --serverdir /home/devpi/server --host 0.0.0.0 --port 3141 --restrict-modify=root
Restart=on-failure

[Install]
WantedBy=multi-user.target

実行して、動作を確認する。

systemctl daemon-reload
systemctl enable --now devpi
systemctl status devpi --no-pager

キャッシュサーバを使う方法

キャッシュサーバを使う一般ユーザで pip の設定をする。 ここでは、localhost のポート 3141 で動作しているとする。

python -m pip config --user set global.index-url http://localhost:3141/root/pypi/+simple/
python -m pip config --user set global.trusted-host localhost

uv で使うには

uv pip install --index-url http://devpi.local:3141/root/pypi/+simple/ --allow-insecure-host localhsot numpy

のようにオプションを設定する。または、環境変数を設定する。

export UV_INDEX_URL=http://localhost:3141/root/pypi/+simple/
export UV_INSECURE_HOST=localhost

参考

Tags of current page

,