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