ໂປຣແກຣມ Python ສາມາດໃຫ້ຄຳສັ່ງລູກໜຶ່ງມີສະພາບແວດລ້ອມພຣັອກຊີຂອງຕົນເອງ. ສຳເນົາຄ່າທີ່ໄດ້ຮັບມາ, ປ່ຽນສຳເນົາ, ແລ້ວສົ່ງໃຫ້ 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 ໃຫ້ການເອີ້ນນີ້ໄດ້ສະພາບແວດລ້ອມນັ້ນ. ສຳເນົາຊ່ວຍຫຼີກລ່ຽງການປ່ຽນ os.environ ສຳລັບວຽກອື່ນໃນຂະບວນການ Python.

ການກຳນົດໂດຍກົງໃສ່ os.environ ກໍມີຄວາມໝາຍ: ມັນອັບເດດສະພາບແວດລ້ອມຂະບວນການຂອງ Python ແລະ ສາມາດກະທົບລູກທີ່ເລີ່ມພາຍຫຼັງ. ມັນບໍ່ອັບເດດ shell ທີ່ເລີ່ມ Python, ແອັບພລິເຄຊັນທີ່ບໍ່ກ່ຽວຂ້ອງ ຫຼື ລູກທີ່ກຳລັງເຮັດວຽກຢູ່ແລ້ວ.

ຖ້າເຈຕະນາຄືການປ່ຽນຄຳສັ່ງໃນອະນາຄົດໃນ shell ແບບໂຕ້ຕອບຂອງທ່ານ, ໃຫ້ເຮັດການປ່ຽນນັ້ນໃນ shell. ຖ້າມີພຽງເຄື່ອງມືໜຶ່ງທີ່ເລີ່ມແລ້ວຕ້ອງການເສັ້ນທາງທີ່ແຕກຕ່າງ, ໃຫ້ເກັບສະພາບແວດລ້ອມຂອງມັນໄວ້ຂ້າງການເອີ້ນ subprocess ດັ່ງທີ່ສະແດງ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ