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 ដូចដែលបានបង្ហាញ។