Program Python boleh memberi satu perintah anak persekitaran proksinya sendiri. Salin nilai yang diwarisi, ubah salinan itu, dan hantar kepada 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,
)

Contoh ini menganggap curl sudah tersedia. Permintaan HTTPS-nya boleh menggunakan proksi HTTP yang menyokong terowong yang diperlukan. Untuk pemeriksaan laman awam ini tanpa kelayakan proksi dikonfigurasikan, calon daripada senarai proksi HTTP boleh menggantikan titik akhir contoh. Anak itu masih menerima baki persekitaran yang disalin, termasuk sebarang tetapan pintasan yang berkenaan.

Menghantar env memberi panggilan ini persekitaran tersebut. Salinan itu mengelakkan os.environ diubah untuk kerja lain dalam proses Python.

Menetapkan terus kepada os.environ juga bermakna: ia mengemas kini persekitaran proses Python dan boleh menjejaskan anak yang dimulakan selepas itu. Ia tidak mengemas kini shell yang melancarkan Python, aplikasi yang tidak berkaitan, atau anak yang sudah berjalan.

Jika niatnya ialah menukar perintah masa depan dalam shell interaktif anda, buat perubahan itu dalam shell. Jika hanya satu alat yang dilancarkan memerlukan laluan berbeza, simpan persekitarannya di sebelah panggilan subprocess seperti yang ditunjukkan.

Artikel berkaitan