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