Windowsでpip install
しても、PATHが正しく通っていない場合、コマンドが認識されないことがあります。しかし、PATHを正しく設定することは、慣れていない人にとってはストレスの原因になり得ます。
この記事では、初心者でも簡単に「WindowsでPythonのPATHを正しく設定する方法」について解説します。PATHの設定がスムーズに行えれば、Pythonの利用がより快適になるでしょう。
1.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)
「パスが含まれている場合は、そのパスが正しいことを確認して再試行してください」と言われています。これはどういうことでしょうか?
2.そもそもパッケージ管理ツールとは何か?
パッケージ管理ツールとは、プログラムやライブラリなど必要なものを簡単に「追加」「更新」「削除」できるツールです。
これらのツールは通常、特定のプログラミング言語やフレームワークに特化しており、「そのプログラミング言語のみが扱える」というルールがあります。例えば、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」には二種類のフォルダが入っています。「Scripts」と「site-packages」です。このうち、「site-packages」にはインストールしたPythonパッケージそのものが格納され、「Scripts」にはインストール時に生成された .exe ファイルが格納されることになります。
- Python311
- Scripts
marktree.exe
などのWindowsの実行ファイルが格納される
- site-packages
marktree/
などのPythonパッケージが格納される
- Scripts
つまり、「PATHにはありません」とは、「あなたのパソコンは、 marktree .exe
ファイルを実行できない状態ですよ」という意味となります。
3.環境変数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
だけで実行できるようにします。
4.【これで解決!】 Profile.ps1にPATHを通そう!
Windowsでは環境変数は$env:
で表されます。PATHはコロンの後にくっついて$env:path
で表されます。
Windowsの環境変数は、「ドキュメント」フォルダの中に特定のフォルダと profile.ps1
を作ることで設定ができます(参考: Windows PowerShell 5.1 から PowerShell 7 への移行 – 個別のプロファイル)。そのフォルダは、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
したにも関わらず、コマンドが実行できない問題が解決されます。