プロセスというのは、プログラムが動いている状態だと思ってください。(本当はもう少し複雑です)
コマンドプロンプトはひとつのプロセスです。
コマンドプロンプト画面がふたつ開いていればそれはふたつのプロセスです。
一方のコマンドプロンプト画面で環境変数を設定(変更)しても、もう一つのコマンドプロンプト画面を見るとその環境変数は異なっています。
コマンドプロンプト画面でコマンドプロンプトを起動することができます。このとき起動したコマンドプロンプトは元のコマンドプロンプトとは別のプロセスです。
以下の実行例を見てください。実際にコマンドプロンプを開いて実行してみることをお勧めします。
CommandPrompt
1C:\>prompt FIRST)
2FIRST) set X=42
3FIRST) echo %X%
442
5FIRST) cmd
6Microsoft Windows [Version 10.0.19043.1348]
7(c) Microsoft Corporation. All rights reserved.
8
9FIRST) prompt SECOND)
10SECOND) echo %X%
1142
12SECOND) set X=100
13SECOND) echo %X%
14100
15SECOND) exit
16
17FIRST) echo %X%
1842
これは、起動したコマンドプロンプトで環境変数を設定しても元のコマンドプロンプトの環境変数には影響しないことを示しています。
naonyさんが行っていることは、
(1)コマンドプロンプトプロセスから
(2)Pythonプロセスを呼び出し、そのPythonプロセスから
(3)コマンドプロンプトプロセスを呼び出しています。
期待しているのは(3)のコマンドプロンプトプロセスで環境変数を設定することで(1)のコマンドプロンプトプロセスの環境変数を設定したいということでしょうが、それはできないのです。Wikipedeiaには「子プロセスが自分の環境に対して行った変更は、親プロセスの環境に影響しない。」と書かれています。
対策としてはotnさんが書かれているようにsetxを使いますが、これはシステムのデフォルトの環境変数を変更することに注意してください。つまり、Windowsを再起動してもそこで設定した環境変数は使われ続けるということです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/06 08:09
2021/12/06 12:40