1回だけインストールする場合、pipはコマンドラインで直接プロキシを受け取れます。ユーザーやシステムの恒久設定ファイルを書かずに経路を試せます。

python -m pip --proxy http://203.0.113.10:8080 install requests

文書用IPの代わりに、利用サービスかHTTPプロキシ一覧から選んだエンドポイントを使います。python -m pipで実行すると、独立したpip実行ファイルがその環境に属すると仮定するより、対象のPython環境が明確になります。

プロキシURLが表すのはプロキシ接続です。http://で始まっていても、パッケージインデックスやダウンロードにはCONNECT経由のHTTPSを使えます。

pipが別の設定を選び続ける場合

pip自身のオプションでは、コマンドライン引数が環境変数に優先し、環境変数が設定ファイルに優先します。関連ファイルはグローバル、ユーザー、仮想環境の各レベルに存在する場合があります。PIP_CONFIG_FILEで追加の設定ファイルを指定できます。

python -m pip config debug

pipが参照する設定元が表示されます。ファイルや環境の値に非公開URLや認証情報が含まれる場合があるため、ローカルで確認してください。

PIP_PROXYと一般的なHTTP/HTTPSプロキシ環境変数も調べます。すべてが同じ設定層ではなく、実際の経路の調査では通常のプロキシ環境処理も影響し得ます。ユーザーファイルの1項目を消しただけで、考えられる設定元がすべてなくなったと思わないでください。

プロキシオプションは証明書の信頼を修復しない

経路がHTTPSサービスに到達しても検証に失敗する場合は、クライアントがどの証明書を受け取ったか確認します。許可された検査構成では、承認済みCAバンドルが必要な場合があります。

python -m pip --proxy http://203.0.113.10:8080 \
  --cert /path/to/approved-ca-bundle.pem install requests

--trusted-hostは有効なHTTPSがなくてもホストを信頼済みとします。プロキシIPを設定するものではなく、証明書エラーの常套対処にするべきでもありません。エンドポイントか信頼設定を修正してください。

pip 24.2は対応ランタイムで、certifiとともにシステム証明書を既定で使うようにしました。それ以前のpipはOSのCAストアを自動使用しませんでした。これにより、承認済み組織CAがあるPython環境で使え、別の環境で欠けている理由を説明できる場合があります。

1回のコマンドのproxy引数は、コマンド終了後には効力を失います。後で永続設定を保存するなら、実際に意図する範囲に置き、テストしただけのエンドポイントにすべてのPython環境を依存させないでください。

関連記事