

以下、用語の使い方が間違っていたり、内容がわかりにくい点は遠慮なくご指摘いただけますと助かります。  
後学のために忌憚なきご意見よろしくお願いいたします。

## 環境

  * OS: Windows10

## 質問

Python のチュートリアル等で `python` コマンドが使えない場合に、原因および解決法としてよく書かれているのは **システム環境変数** の
`PATH` への登録ですが、なぜ **ユーザー環境変数** の `PATH` ではないのでしょうか？

ユーザー環境変数の `PATH` に登録したところうまくいかず、コマンドプロンプトで `eho %PATH%` を確認すると、ユーザー環境変数の
`PATH` に登録したはずの内容が表示されていませんでした。

上記質問の考えられる理由としては以下のどれかと推測していますが、理由が明記されているような情報にたどり着けないため質問させてください。

  * `python` とたたくとシステム環境変数しか見に行かないから
  * `python` は `PATH`を見に行く（i.e. OS のルールに従って生成されたシステム環境変数＋ユーザー環境変数）が、 本来であれば `PATH` にユーザー環境変数の内容も反映されるはずなのにされていないから

## 質問者の理解

  * `python` コマンドなどのパスを通すためには、`python.exe` などが格納されているディレクトリのパスを環境変数 `PATH` に登録する必要がある
  * Windows のコマンドプロンプトで環境変数の更新を反映させるためには、プロンプトの再起動が必要
  * （管理者権限でない）通常の権限でコマンドプロンプトを使用している場合、環境変数 `PATH` 以外はユーザー環境変数が優先される
  * （管理者権限でない）通常の権限でコマンドプロンプトを使用している場合、環境変数 `PATH` はシステム環境変数＋ユーザー環境変数として設定されており、重複する内容があれば先に読み込まれている方が優先される（i.e. システム環境変数にかかれていればそちらが優先される


CC BY-SA 4.0
2023-01-16T09:31:23.057
93382
2023-01-16T12:45:51.337
2023-01-16T10:06:46.780
3060
29953
question
python windows
Python のパスを通すとき、システム環境変数に書かなければいけないのはなぜですか？


> 質問 Python のチュートリアル等で python  
>  コマンドが使えない場合に、原因および解決法としてよく書かれているのはシステム環境変数の PATH への登録ですが、なぜユーザー環境変数の  
>  PATH ではないのでしょうか？

システム環境変数でもユーザー環境変数でもどちらでも大丈夫です。

システム環境変数は全ユーザで有効となりますが、ユーザー環境変数は特定のユーザだけで有効となります。  
※質問された方が参照されたページが何かわかりませんが、ユーザー環境変数ではダメ、システム環境変数でなければダメとは書いていないはずです。

> ユーザー環境変数の PATH に登録したところうまくいかず、コマンドプロンプトで eho %PATH% を確認すると、ユーザー環境変数のPATH
> に登録したはずの内容が表示されていませんでした。

環境変数を設定した後に新たに「コマンドプロンプト」を起動すれば確認ができるはずです。既に起動済みの「コマンドプロンプト」には新たに追加変更された環境変数が反映されません。

※ `eho %PATH%`は`echo %PATH%`の誤りですよね。

> 質問者の理解
>
>   * python コマンドなどのパスを通すためには、python.exe などが格納されているディレクトリのパスを環境変数PATH
> に登録する必要がある
>

はい、私の認識と同じです。

>   * Windows のコマンドプロンプトで環境変数の更新を反映させるためには、プロンプトの再起動が必要
>

はい、必要です。環境変数の変更前に起動したプログラムには反映できません。

>   * （管理者権限でない）通常の権限でコマンドプロンプトを使用している場合、環境変数 PATH 以外はユーザー環境変数が優先される
>

いいえ、システム環境変数やユーザー環境変数の違いは全ユーザで有効になるか、設定したときのユーザだけで有効になるかの違いです。

>   * （管理者権限でない）通常の権限でコマンドプロンプトを使用している場合、環境変数
> PATHはシステム環境変数＋ユーザー環境変数として設定されており、重複する内容があれば先に読み込まれている方が優先される（i.e.>
> システム環境変数にかかれていればそちらが優先される
>

いいえ、管理者権限の有り無しは今回の問題とは無関係だと思います。  
システム環境変数とユーザー環境変数のPathはシステム環境変数として登録されたものが優先されました。

* * *

追記

環境変数に定義できる最大長が決まっており、システム環境変数が長過ぎるとユーザー環境変数が切り捨てられることがあるようです。


CC BY-SA 4.0
2023-01-16T11:57:27.267
93383
2023-01-16T12:45:51.337
2023-01-16T12:45:51.337
35558
35558
93382
answer