【发布时间】:2016-08-28 00:44:53
【问题描述】:
我已经被难住了太久了。希望有人能提供帮助。
我正在编写一个 Python CLI 应用程序,它需要为当前命令提示符会话 (Windows) 设置一个临时环境变量 (PATH)。应用程序已经使用 here 看到的方法为所有未来会话永久设置环境变量。
为了尝试为当前会话设置临时环境变量,我尝试了以下操作:
- 使用
os.environ设置环境变量 - 使用答案here,它使用了一个临时文件。不幸的是,这在直接从 Cmd 提示符而不是 Python 运行时有效。
- 使用
subprocess.call、subprocess.check_call调用SET
该工具的用户将需要这个,因此他们不必关闭命令提示符即可利用我永久设置的环境变量。
我看到其他应用程序这样做,但我不确定如何使用 Python 来完成。
【问题讨论】:
-
我不能明确地与 Windows 对话——但在 UNIX 上,父进程需要与子进程合作以修改其环境变量(缺少诸如附加调试器之类的技巧)完全是有意的和设计。
-
@CharlesDuffy,从技术上讲,在 Windows 中,通常可以(但并非总是)打开父进程的句柄并重写其环境变量——取决于父进程的 DACL、完整性级别以及它是否一个“受保护”的过程。但是,我认为这不是一个好主意。
标签: python windows environment-variables