回答編集履歴

1

追記

2021/12/06 08:22

投稿

otn
otn

スコア85901

test CHANGED
@@ -9,3 +9,51 @@
9
9
  それ以降に新規に生成したプロセスから有効です。
10
10
 
11
11
  [setx | Microsoft Docs](https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/setx)
12
+
13
+
14
+
15
+ #補足の追記
16
+
17
+ > それ以降に新規に生成したプロセスから有効です。
18
+
19
+
20
+
21
+ 正確には、それ以降にWindows本体やExplorerから新規に生成したプロセスから有効です。
22
+
23
+ `setx`やGUIで変更する以前に起動されていたプロセスから、新規に子プロセスを起動した場合には、影響しませんので、
24
+
25
+ ```Python
26
+
27
+ import subprocess
28
+
29
+ subprocess.run('set FOO', shell=True) # 未定義
30
+
31
+ subprocess.run('setx FOO 123', shell=True) # ここでシステム変更するが
32
+
33
+ # 起動元のPythonプロセスには反映されないのでそこから起動しても反映されない
34
+
35
+ subprocess.run('set FOO', shell=True) # 未定義
36
+
37
+ ```
38
+
39
+ となります。
40
+
41
+
42
+
43
+ Pythonから起動するプロセスの環境変数を変更したいなら、
44
+
45
+ ```Python
46
+
47
+ import subprocess
48
+
49
+ import os
50
+
51
+ subprocess.run('set FOO', shell=True) # 未定義
52
+
53
+ os.environ["FOO"]="123"
54
+
55
+ subprocess.run('set FOO', shell=True) # FOO=123 が定義されている
56
+
57
+ ```
58
+
59
+ のようにPythonプロセスの環境変数を変更します。