pip の SOCKS サポートには、pip を実行する Python インタープリタで任意の SOCKS 依存関係を利用できることが必要です。そのインタープリタが SOCKS 経由でしかパッケージインデックスに到達できない場合は、まず別の接続済みマシンで依存関係を取得します。

接続済みのマシンで、小さな wheel ディレクトリを用意します:

python -m pip download --only-binary=:all: --dest wheelhouse PySocks

そのディレクトリを対象マシンへ移し、次にそのマシンの所定のインタープリタでローカルにインストールします:

python -m pip install --no-index --find-links wheelhouse PySocks

--no-index はこの準備段階を渡されたファイルだけで完結させます。インデックスへ別の要求を出して元の接続問題を解こうとはしません。

依存関係が用意できたら、実際のパッケージ操作に SOCKS 経路を選べます:

python -m pip install --proxy socks5h://proxy.example.net:1080 package_name

プロキシ認証なしで許可された公開パッケージのダウンロードでは、エンドポイントを SOCKS5 プロキシ一覧 の候補に置き換え、目的のパッケージを選びます。socks5h という表記は プロキシ側で宛先名を解決することを求め、socks5 はこのクライアント経路で宛先をローカルに解決します。

準備のインストールとパッケージ操作は同じインタープリタと同じ環境で行ってください。PySocks を別の Python に入れても、対象 pip の import は変わりません。役に立つ確認は、どの python -m pip コマンドが作業を実行するかであり、別の端末が PySocks 導入済みと報告するかではありません。

関連記事