Windowsでpip installしても、PATHが正しく通っていない場合、コマンドが認識されないことがあります。しかし、PATHを正しく設定することは、慣れていない人にとってはストレスの原因になり得ます。
この記事では、初心者でも簡単に「WindowsでPythonのPATHを正しく設定する方法」について解説します。PATHの設定がスムーズに行えれば、Pythonの利用がより快適になるでしょう。
pipでコマンドをインストールしたのに使えない!?
試しに、自分が作成した「marktree」をインストールしてみましょう。これは、marktree hoge.mdとすると、Markdownの#の数に基づいて木構造を生成してくれるコマンドです。
pipを使用してインストールしてみます。Powershellを開いて、以下のコマンドを貼り付けて実行してみてください。
pip install marktreeこれで問題なくインストールできれば、marktreeがそのまま使えるはずですが、一部のデバイスでは以下のような「警告」が表示されることがあります。
WARNING: The script marktree.exe is installed in 'C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.上記を日本語に訳すと、以下のようになります。
警告: marktree.exe スクリプトは ‘C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts’ にインストールされていますが、これはPATHにありません。
このディレクトリをPATHに追加するか、この警告を抑制したい場合は、–no-warn-script-location を使用してください。この翻訳はChatGPTによるものです(出典: ChatGPT)
注目すべきは、「PATHにありません」という表現です。
とりあえずコマンドを実行してみましょう。すると、以下のようにmarktreeは実行されませんでした。
> marktree hoge.md
marktree: The term 'marktree' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.marktree: ‘marktree’ という用語は、cmdlet、関数、スクリプトファイル、または実行可能プログラムの名前として認識されません。
名前のスペルを確認するか、パスが含まれている場合は、そのパスが正しいことを確認して再試行してください。この翻訳はChatGPTによるものです(出典: ChatGPT)
「パスが含まれている場合は、そのパスが正しいことを確認して再試行してください」と言われています。これはどういうことでしょうか?
そもそもパッケージ管理ツールとは何か?
パッケージ管理ツールとは、プログラムやライブラリなど必要なものを簡単に「追加」「更新」「削除」できるツールです。
これらのツールは通常、特定のプログラミング言語やフレームワークに特化しており、「そのプログラミング言語のみが扱える」というルールがあります。
例えば、Pythonのプロジェクトではpip、JavaScriptのプロジェクトではnpmがそれぞれのツールとして使われます。
それぞれのツールとして使われるということは、インストールしたファイルの保存場所も異なるということです。Pythonのパッケージ管理ツール「pip」もまた専用のフォルダに保存されています。
では、marktreeはどこに保存されているのでしょうか?
パッケージの詳細を確認するにはpip show パッケージコマンドを実行します。
> pip show marktree
Name: marktree
Version: 1.0.0
Summary: convert headings in a Markdown file (.md) into a tree-like structure and output.
Home-page: https://github.com/yusu79/marktree
Author: yusu79
Author-email: yusu79oss@gmail.com
License: MIT
Location: C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages
Requires:
Required-by: 見るべき項目は “Location” です。ここに「marktree」は保存されています。
ここで先程の警告をもう一度見ると、
‘C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts’ にインストールされていますが、これはPATHにありません。
と書かれています。
注意が必要です。インストールされている場所とpip showで表示されている場所が微妙に異なります。
実は、pipのインストール先のPython311には二種類のフォルダが入っています。
site-packagesとScriptsです。
このうち、site-packagesにはインストールしたPythonパッケージそのものが格納され、Scriptsにはインストール時に生成された .exe ファイルが格納されることになります。
- site-packages
marktreeなどのPythonパッケージが格納される
- Scripts
marktree.exeなどのWindowsの実行ファイルが格納される
つまり、「PATHにはありません」とは、「あなたのパソコンはmarktree.exeを実行できない状態ですよ」という意味となります。
環境変数PATHが通っていないとは、どういうこと?
PATHは「環境変数」の一種で、OSやアプリケーションが使用する設定情報のセットです。プログラムやシステムはこれらの変数にアクセスして動作をカスタマイズします。
例えば、「HOME」はユーザーのディレクトリを指定します。これにより、システムやプログラムがユーザーに合わせた動作をすることができます。
では、「PATH」はどんな環境変数なのでしょうか。簡単に言えば、コンピュータ上のどのディレクトリにプログラムがあるかを指定する一連のディレクトリパスです。
OSはユーザーがコマンドや実行ファイルを入力したとき、PATH内のディレクトリから対応する実行ファイルを探して実行します。
PATHがなければ、ユーザーはプログラムを実行するたびにプログラムがあるディレクトリまでのフルパスを指定しなければなりません。
しかし、PATHが設定されていればOSはそのパスを検索し、指定されたプログラムが見つかるまでディレクトリを順番に検索します。
つまり、実はフルパスを指定すれば PATH を通さなくてもmarktreeは実行できます。
> C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts\marktree.exe --help_jp
使用法: marktree [-h|--help] [-L|-l|--level 階層] [hoge.md]
説明: Markdownファイル(.md)の見出しを木構造で表示するコマンド
引数:
hoge.md 木構造で表示したいMarkdownファイルを引数に指定します。
オプション:
-h|--help ヘルプを表示します
--help_jp 日本語のヘルプを表示します
-L|-l|--level 指定した階層までの見出しを表示します(デフォルトは「6」)
ちゃんとmarktree.exe --help_jpが実行されました。
ですが、これではとても不便ですよね。そのため、PATHを通して、marktreeだけで実行できるようにします。
【これで解決!】 Profile.ps1にPATHを通そう!
Windowsでは環境変数は$env:で表されます。PATHはコロンの後にくっついて$env:pathで表されます。
Windowsの環境変数は、「ドキュメント」フォルダの中に特定のフォルダとprofile.ps1を作ることで設定ができます[1] 。
特定のフォルダは、Powershellのバージョンによって変わるので注意してください。
- もし、Powershellのバージョンが5なら
C:\Users\user\Documents\WindowsPowerShell\profile.ps1を作成する
- もし、Powershellのバージョンが7なら
C:\Users\user\Documents\PowerShell\profile.ps1を作成する
そして、profile.ps1に以下のように$env:path += フォルダパスを記述します。
# コマンドのPATH
$env:path += ";C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts"書いたら一度 PowerShell を閉じてください。そして、Powershell を再度起動すると、marktreeが実行できているはずです。
> marktree --help_jp
使用法: marktree [-h|--help] [-L| -l|--level 階層] [hoge.md]
説明: Markdownファイル(.md)の見出しを木構造で表示するコマンド
引数:
hoge.md 木構造で表示したいMarkdownファイルを引数に指定します。
オプション:
-h|--help ヘルプを表示します
--help_jp 日本語のヘルプを表示します
-L|-l|--level 指定した階層までの見出しを表示します(デフォルトは「6」)
以上で、「Windowsでpip installしたのにコマンドが実行できない問題」が解決できます。
より詳しくPATHについて知りたい方は、以下の記事をご参照ください。

まとめ
この記事ではpip installしているにも関わらず、PATHが通っていないが為にコマンドを実行できない問題の解決方法をまとめました。
これで、Windowsでpip installしたにも関わらず、コマンドが実行できない問題が解決されます。
