Python3.9の3種類のインストール方法とPATHの違いを調べてみた

もくじ

はじめに

書くこと

MacBookにPythonをインストールする方法が複数ありますが、それぞれのインストール方法とPATHの違いを解説します。

MacへPythonをインストールする方法ですが、ひとつではありません。

ネット上に様々なインストール方法が掲載されており、どれを参考にしてよいのか混乱したため、3つの方法についてまとめてみたいと思います。

なぜ今さらこんなことを書くのか

今までPythonの開発(勉強)に統合開発環境(IDE)であるAnacondaを使用してきました。

Anacondaを使用すれば、Pythonやライブラリを含めてインストールできるため、Pythonインストールについて細かく確認しませんでした。

しかしこのたび、Visual Studio Codeに乗り換えるため、Python自体のインストール方法を調べることになりました。

ちょっと補足

Macにデフォルトで入っているPython

まず、自分が使用しているMacのバージョンは「12.3.1」です。

MacにデフォルトでインストールされているPythonがあります。

デフォルトのPythonは/usr/bin/python3(僕のMacの場合)にインストールされており、バージョンは「3.8.9」でした(こちらも僕のMacの場合)。

このデフォルトでインストールされたPythonを使うのではなく、新たにインストールするPythonをVS Codeで使いたいため、Pythonのインストール方法について調べることになりました。

解説

Pythonの3種類のインストール方法

大きく分けて以下の3つがあると思います。これらについて取り上げます。

  1. パッケージからのインストール
  2. Homebrewからのインストール
  3. pyenvからのインストール

それぞれのインストール方法と、インストールされる場所(PATHを通す場所)について見ていきます。

パッケージでインストール

python.orgからインストーラーをダウンロードして、実行することによりインストールする方法です。

ここでは、Python 3.9.13のインストーラーを実行してみました。

/ApplicationsディレクトリにPython 3.9ディレクトリが作成されるのもパッケージからのインストールの特徴です。

Python実行ファイルは/Library/Frameworks/Python.frameworkに作られます。

% ls -lt /Library/Frameworks/Python.framework 
total 0
drwxrwxr-x  4 root  wheel  128  6 25 16:33 Versions
lrwxr-xr-x  1 root  wheel   24  6 25 16:33 Headers -> Versions/Current/Headers
lrwxr-xr-x  1 root  wheel   26  6 25 16:33 Resources -> Versions/Current/Resources
lrwxr-xr-x  1 root  wheel   23  6 25 16:33 Python -> Versions/Current/Python

実行ファイルへのシンボリックリンクは/usr/local/binに作られます。以下が作成されたもの。

% ls -lt /usr/local/bin            
total 0
lrwxrwxr-x  1 root  admin  66  6 25 16:33 pip3 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/pip3
lrwxrwxr-x  1 root  admin  68  6 25 16:33 pip3.9 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/pip3.9
lrwxr-xr-x  1 root  wheel  68  6 25 16:33 pydoc3 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/pydoc3
lrwxr-xr-x  1 root  wheel  70  6 25 16:33 2to3-3.9 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/2to3-3.9
lrwxr-xr-x  1 root  wheel  79  6 25 16:33 python3.9-intel64 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9-intel64
lrwxr-xr-x  1 root  wheel  69  6 25 16:33 idle3.9 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/idle3.9
lrwxr-xr-x  1 root  wheel  70  6 25 16:33 pydoc3.9 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/pydoc3.9
lrwxr-xr-x  1 root  wheel  76  6 25 16:33 python3-config -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/python3-config
lrwxr-xr-x  1 root  wheel  71  6 25 16:33 python3.9 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9
lrwxr-xr-x  1 root  wheel  78  6 25 16:33 python3.9-config -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9-config
lrwxr-xr-x  1 root  wheel  67  6 25 16:33 idle3 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/idle3
lrwxr-xr-x  1 root  wheel  69  6 25 16:33 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/python3
lrwxr-xr-x  1 root  wheel  66  6 25 16:33 2to3 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/2to3
lrwxr-xr-x  1 root  wheel  77  6 25 16:33 python3-intel64 -> ../../../Library/Frameworks/Python.framework/Versions/3.9/bin/python3-intel64
(以下省略)

ですので、PATHを通すときは、/usr/binよりも/usr/local/binが優先して読み込まれるように設定する必要がありそうです。

ちなみに、Macには/etc/pathsというファイルがあり、このファイルからもPATHが設定されています。自分の環境では以下のようになっていました。

% cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

/usr/local/binの方が/usr/binよりも優先的に読み込まれる設定となっています。

なので、追加のPATHの設定は特にせずに、ターミナルを再起動すればよさそうです。やってみます。

デフォルトの「3.8.9」から「3.9.13」になっています。

また、パッケージからのインストールの場合には~/.zprofileに以下が自動で追記されます。

# Setting PATH for Python 3.9
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"
export PATH

whichコマンドを実行した結果も載せておきます。

【アンインストール】パッケージからインストールした場合

ここらへんが参考になりました。

Macにインストールした公式Python3をアンインストールする方法

Homebrewでインストール

Homebrewとはパッケージ管理システムのひとつです。デフォルトではインストールされていませんので、Homebrewからインストールします。

HomebrewからインストールできるPythonのバージョンを検索します。”@”がついているものがインストール可能なバージョンです。

% brew search python
==> Formulae
app-engine-python             ipython                       python-launcher               python-tk@3.9                 python@3.8                    pythran
boost-python3                 libpython-tabulate            python-markdown               python-yq                     python@3.9                    jython
bpython                       micropython                   python-tabulate               python@3.10                   reorder-python-imports        cython
gst-python                    ptpython                      python-tk@3.10                python@3.7                    wxpython

==> Casks
awips-python                                                                              mysql-connector-python

If you meant "python" specifically:
It was migrated from homebrew/cask to homebrew/core.

ここではpython@3.9をインストールしてみます。

% brew install python@3.9
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
evernote-backup                                                                           lexicon
==> New Casks
gama                                                                                      gama-jdk
You have 2 outdated formulae installed.
You can upgrade them with brew upgrade
or list them with brew outdated.
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.9/manifests/3.9.13_1
Already downloaded: /Users/atsushi/Library/Caches/Homebrew/downloads/874a1eda6b1ec5f181fd49612cff538012a071e86355c55174d01f3eb6d3fe96--python@3.9-3.9.13_1.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.9/blobs/sha256:2e02d1c12a0baecc8b1af05701c7db8038e6b9a7bf453cc49992eef74c268f7b
Already downloaded: /Users/atsushi/Library/Caches/Homebrew/downloads/c31e2636906b2ecbca22aea377baa370b942747cabe5b0ceac48379f21ec9556--python@3.9--3.9.13_1.arm64_monterey.bottle.tar.gz
==> Pouring python@3.9--3.9.13_1.arm64_monterey.bottle.tar.gz
==> /opt/homebrew/Cellar/python@3.9/3.9.13_1/bin/python3 -m ensurepip
==> /opt/homebrew/Cellar/python@3.9/3.9.13_1/bin/python3 -m pip install -v --no-deps --no-index --upgrade --isolated --target=/opt/homebrew/lib/python3.9/site-packages /opt/homebr
==> Caveats
Python has been installed as
  /opt/homebrew/bin/python3
Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /opt/homebrew/opt/python@3.9/libexec/bin
You can install Python packages with
  pip3 install 
They will install into the site-package directory
  /opt/homebrew/lib/python3.9/site-packages
tkinter is no longer included with this formula, but it is available separately:
  brew install python-tk@3.9
See: https://docs.brew.sh/Homebrew-and-Python
==> Summary
🍺  /opt/homebrew/Cellar/python@3.9/3.9.13_1: 3,088 files, 57.6MB
==> Running `brew cleanup python@3.9`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

インストールログにPython has been installed as /opt/homebrew/bin/python3と書いてあります。

/opt/homebrew/binの中を見てみます。以下が新しく貼られたシンボリックリンクです。実行ファイルは/opt/homebrew/Cellar/python@3.9/3.9.13_1/binにありました。

% ls -lt /opt/homebrew/bin 
total 16
lrwxr-xr-x  1 atsushi  admin    40  6 25 17:44 pip3.9 -> ../Cellar/python@3.9/3.9.13_1/bin/pip3.9
lrwxr-xr-x  1 atsushi  admin    40  6 25 17:44 wheel3 -> ../Cellar/python@3.9/3.9.13_1/bin/wheel3
lrwxr-xr-x  1 atsushi  admin    38  6 25 17:44 pip3 -> ../Cellar/python@3.9/3.9.13_1/bin/pip3
lrwxr-xr-x  1 atsushi  admin    50  6 25 17:44 python3.9-config -> ../Cellar/python@3.9/3.9.13_1/bin/python3.9-config
lrwxr-xr-x  1 atsushi  admin    43  6 25 17:44 python3.9 -> ../Cellar/python@3.9/3.9.13_1/bin/python3.9
lrwxr-xr-x  1 atsushi  admin    48  6 25 17:44 python3-config -> ../Cellar/python@3.9/3.9.13_1/bin/python3-config
lrwxr-xr-x  1 atsushi  admin    41  6 25 17:44 python3 -> ../Cellar/python@3.9/3.9.13_1/bin/python3
lrwxr-xr-x  1 atsushi  admin    42  6 25 17:44 pydoc3.9 -> ../Cellar/python@3.9/3.9.13_1/bin/pydoc3.9
lrwxr-xr-x  1 atsushi  admin    40  6 25 17:44 pydoc3 -> ../Cellar/python@3.9/3.9.13_1/bin/pydoc3
lrwxr-xr-x  1 atsushi  admin    41  6 25 17:44 idle3.9 -> ../Cellar/python@3.9/3.9.13_1/bin/idle3.9
lrwxr-xr-x  1 atsushi  admin    39  6 25 17:44 idle3 -> ../Cellar/python@3.9/3.9.13_1/bin/idle3
lrwxr-xr-x  1 atsushi  admin    42  6 25 17:44 2to3-3.9 -> ../Cellar/python@3.9/3.9.13_1/bin/2to3-3.9
lrwxr-xr-x  1 atsushi  admin    38  6 25 17:44 2to3 -> ../Cellar/python@3.9/3.9.13_1/bin/2to3
(以下省略)

/opt/homebrew/bin/の中にPython実行ファイルへのシンボリックがあるので、この場合、/usr/binよりも/usr/homebrew/binが優先的に読み込まれる必要があります。

~/.zshrc~/.zprofileexport PATH=/opt/homebrew/bin:$PATH を記述してもダメでした。/usr/binが優先的に読み込まれてしまいます。

なので/etc/pathsの1行目に/opt/homebrew/binを追記します。

% cat /etc/paths
/opt/homebrew/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

こうすることで、/opt/homebrew/bin下のシンボリックリンクが読み込まれるようになりました。

whichコマンドの結果も載せておきます。

【アンインストール】Homebrewでインストールした場合

コマンド一発でアンインストールできます。

% brew uninstall python@3.9
Uninstalling /opt/homebrew/Cellar/python@3.9/3.9.13_1... (3,088 files, 57.6MB)

もし/etc/paths~/.zshrc~/.zprofileを編集した場合は、必要に応じて元に戻しておいてください。

pyenvでインストール

個人的には、このインストール方法が一番いいと思っています。

理由は3つ。

  1. 複数のバージョンのPythonがインストールされた環境で、簡単に切り替えを行うことができる。
  2. /etc/pathsを編集する必要がない。
  3. コマンドでアンインストールできる。

まず、pyenvをインストールします。Homebrewを使ってインストールします。

% brew install pyenv
==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/manifests/2.3.1
Already downloaded: /Users/atsushi/Library/Caches/Homebrew/downloads/9271fe4e21f56627d5912a0b7a741ea3cee61865c48d478e1739c57087c0905b--pyenv-2.3.1.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/blobs/sha256:89707dc2d5d540ff8d5a292623a8c513d59e982499d3f8095155f7f2e1ccc455
Already downloaded: /Users/atsushi/Library/Caches/Homebrew/downloads/45a4bc962bf5109ea65493658b8f281cc141964aa66bff6baf458deba2b0bf12--pyenv--2.3.1.arm64_monterey.bottle.tar.gz
==> Pouring pyenv--2.3.1.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/pyenv/2.3.1: 925 files, 3MB
==> Running `brew cleanup pyenv`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

pyenvコマンドを使用してPython 3.9.13をインストールしてみます。

% pyenv install 3.9.13  
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.13.tar.xz...
-> https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tar.xz
Installing Python-3.9.13...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.9.13 to /Users/atsushi/.pyenv/versions/3.9.13

インストールログにInstalled Python-3.9.13 to /Users/atsushi/.pyenv/versions/3.9.13と書かれている通り、pyenvの場合は~/.pyenv/versions/3.9.13にインストールされるようです。

~/.pyenv/versions/3.9.13/binの中を見てみます。

% ls -l ~/.pyenv/versions/3.9.13/bin     
total 7424
lrwxr-xr-x  1 atsushi  staff        8  6 25 18:36 2to3 -> 2to3-3.9
-rwxr-xr-x  1 atsushi  staff      128  6 25 18:36 2to3-3.9
lrwxr-xr-x  1 atsushi  staff        7  6 25 18:36 idle -> idle3.9
lrwxr-xr-x  1 atsushi  staff        7  6 25 18:36 idle3 -> idle3.9
-rwxr-xr-x  1 atsushi  staff      126  6 25 18:36 idle3.9
lrwxr-xr-x  1 atsushi  staff        6  6 25 18:36 pip -> pip3.9
-rwxr-xr-x  1 atsushi  staff      256  6 25 18:36 pip3
-rwxr-xr-x  1 atsushi  staff      256  6 25 18:36 pip3.9
lrwxr-xr-x  1 atsushi  staff        8  6 25 18:36 pydoc -> pydoc3.9
lrwxr-xr-x  1 atsushi  staff        8  6 25 18:36 pydoc3 -> pydoc3.9
-rwxr-xr-x  1 atsushi  staff      111  6 25 18:36 pydoc3.9
lrwxr-xr-x  1 atsushi  staff        9  6 25 18:36 python -> python3.9
lrwxr-xr-x  1 atsushi  staff       16  6 25 18:36 python-config -> python3.9-config
lrwxr-xr-x  1 atsushi  staff        9  6 25 18:36 python3 -> python3.9
lrwxr-xr-x  1 atsushi  staff       16  6 25 18:36 python3-config -> python3.9-config
-rwxr-xr-x  1 atsushi  staff  3710935  6 25 18:36 python3.9
-rwxr-xr-x  1 atsushi  staff     2070  6 25 18:36 python3.9-config
-rwxr-xr-x  1 atsushi  staff    65501  6 25 18:36 python3.9-gdb.py

pyenvの場合のPATHの通し方は以下になります。(参考サイトに助けられました。ありがとうございました!)

% echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
% echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile
% echo 'eval "$(pyenv init -)"' >> ~/.zprofile

ターミナルを再起動してwhichコマンドを実行してみます。

PATHが通っています。

【アンインストール】pyenvでインストール

こちらもコマンド一発でアンインストールできます。

% pyenv uninstall 3.9.13 
pyenv: remove /Users/atsushi/.pyenv/versions/3.9.13? [y|N] y
pyenv: 3.9.13 uninstalled

~/.zprofileに追記したものは適宜削除いただければと思います。

最後に

Pythonのセットアップには苦しまされました。

色んなインストールの方法があるとは。。(個人的にはひとつであってほしい)

参考になれば幸いです。あらためて、参考サイトの執筆者の方々に感謝申し上げます。

さあプログラミング!(あ、VS Codeのセットアップがまだだ。。。)

参考サイト

Using Python on a Mac¶

Homebrew を使って、Python 3.9 をインストールしたときの設定諸々 〜インストール先が「/opt/homebrew/bin」になってるよ!!〜 – 京橋のバイオインフォマティシャンの日常

Macにpyenvを使用してPythonをインストールする

[python]pyenvがバージョンを切り替える仕組みを理解する

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメント一覧 (3件)

  • 「macOS 12.3 Monterey」で、Python 2.7のランタイムを削除されたためデフォルトのpythonがなくなったようです。ライトユーザーなのでわざわざインストールしないで使ってたのですが、そんなわけでここに流れ着きました。

  • ああ、ごめんなさい。python3は入ってました。pythonというコマンドが無くなったのでパニックになっていたようです。

    • 承知しました。最近は”python3″コマンドですね。
      コメントありがとうございます。

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

もくじ
閉じる