Python プログラムは、1 つの子コマンドに専用のプロキシ環境を与えられます。継承した値をコピーし、コピーを変更して、subprocess.run に渡します。

import os
import subprocess

child_env = os.environ.copy()
child_env["https_proxy"] = "http://proxy.example:8080"
subprocess.run(
    ["curl", "--head", "https://www.example.com/"],
    env=child_env,
    check=True,
    timeout=30,
)

この例は curl がすでに利用できることを前提としています。HTTPS リクエストは、必要なトンネルに対応する HTTP プロキシを使えます。プロキシの認証情報を設定していないこの公開サイト確認では、HTTP プロキシ一覧の候補を例のエンドポイントの代わりに使えます。子プロセスはコピーした環境の残りも受け取り、該当するバイパス設定も引き継ぎます。

env を渡すと、この呼び出しだけがその環境を使います。コピーなので、Python プロセス内の他の作業のために os.environ を変更せずに済みます。

os.environ へ直接代入することにも意味があります。Python のプロセス環境を更新し、その後に起動する子プロセスに影響し得ます。ただし Python を起動したシェルや無関係なアプリケーション、すでに実行中の子プロセスは更新されません。

対話シェルで今後のコマンドを変えたいなら、シェル側で変更してください。起動した 1 つのツールだけ別の経路が必要なら、示したようにその環境を subprocess 呼び出しのそばに置きます。

関連記事