HomebrewでPythonを入れたのに古いPythonが実行された理由を調べてみた
はじめに
プログラミングを学習しています。
最近、MacBook Air M5(24GB/512GB)を購入し、PythonやGoの学習環境を整え始めました。
今回は環境構築をしながら、
「動いたから終わり」
ではなく、
「なぜそう動くのか」
を調べて理解した内容を学習ログとしてまとめます。
今回やったこと
今回導入したものはこちらです。
- Homebrew
- Git
- VS Code
- Cursor
- Python
- uv
- Go
PythonはHomebrewからインストールしました。
brew install python
ところが、
python3 --version
を実行すると、
Python 3.9.6
と表示されました。
「Homebrewで最新版をインストールしたはずなのに、なぜ古いPythonが実行されるんだろう?」
ここで疑問が生まれました。
原因はPATHの優先順位だった
まず、どのPythonが実行されているのか確認しました。
which python3
結果は
/usr/bin/python3
つまり、Homebrew版ではなくmacOS標準のPythonが実行されていました。
設定を見直したあと、再度確認すると
which python3
結果は
/opt/homebrew/bin/python3
となり、
python3 --version
でも
Python 3.14.6
になりました。
PATHとは何か?
最初は
「PATHって何?」
という状態でした。
調べてみると、
PATHとは、プログラムを探す場所を順番に並べた一覧のことでした。
例えば
python3
と入力すると、
OSは
/opt/homebrew/bin
↓
/usr/local/bin
↓
/usr/bin
というように順番に探していきます。
最初に見つかったPythonが実行されます。
つまりPATHは
「プログラムを探す住所録」
のようなものだと理解しました。
Homebrew版Pythonが実行されるようになった理由
Homebrewは
/opt/homebrew/bin
にPythonをインストールします。
一方、
macOS標準のPythonは
/usr/bin
にあります。
PATHの順番によって、
どちらのPythonが実行されるかが決まります。
今回はHomebrew側が優先されるようになったことで、
最新版のPythonが実行されるようになりました。
Goでも同じように学んだこと
Goもインストールしました。
最初、
go run main.go
を実行すると
stat main.go: no such file or directory
というエラーになりました。
原因は、
現在いるフォルダが
Desktop
だったからです。
実際のファイルは
Desktop
└── NewProject
└── main.go
にありました。
つまり、
Goの問題ではなく、
現在いるフォルダが違っただけでした。
この時に
pwdcdls
の役割も理解できました。
開発フォルダも整理した
最初はDesktop上で学習していました。
しかし、
今後
- Python
- Go
- Unity
- 個人開発
などプロジェクトが増えることを考え、
ホームディレクトリの中に
Developer
フォルダを作成しました。
現在は
Developer
├── PythonStudy
│ └── main.py
└── GoStudy
└── main.go
という構成で学習しています。
今回学んだこと
今回は環境構築以上に、
「なぜそう動くのか」
を理解できたことが収穫でした。
特に
- PATH
- which
- pwd
- ls
- cd
は、
単なるコマンドではなく、
OSがプログラムやファイルを探す仕組みを理解するきっかけになりました。
おわりに
今後はPythonやGoなども学習を進める予定です。
環境構築だけでも知らないことばかりで、とても広い世界に飛び込んだと感じました。
焦らず一つずつ、「なぜそうなるのか」を理解しながら学んでいこうと思います。