0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Homebrewと公式インストーラーのPythonが混在

Last updated at Posted at 2024-10-07

環境

  • Macbook Air(M1, 2020), Ventura
  • 初心者です、言葉遣い等間違っている可能性もありますがお手柔らかにお願いします

原因

大学で何回かPythonを使ったことがあるが、時間が空いてしまいどれをインストールしたかを忘れてしまった。初心者なのでネットに転がっている記事頼りで環境構築してしまったので、あまりよくわかっていなかった。

状況

HomebrewからインストールしたPythonと公式インストーラーからインストールしたPythonが競合している

HomebrewからインストールしたPython

バージョンはPython3.12.3のようです。/opt/homebrew/Cellar/python@3.12/3.12.3に入っています。

zsh
~ % brew info python
==> python@3.12: stable 3.12.3 (bottled)
Interpreted, interactive, object-oriented programming language
https://www.python.org/
Installed
/opt/homebrew/Cellar/python@3.12/3.12.3 (3,272 files, 65.7MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-05-04 at 11:41:00
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/p/python@3.12.rb
License: Python-2.0
==> Dependencies
Build: pkg-config ✔
Required: mpdecimal ✔, openssl@3 ✔, sqlite ✔, xz ✔
==> 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.12/libexec/bin

See: https://docs.brew.sh/Homebrew-and-Python
==> Analytics
install: 314,431 (30 days), 903,328 (90 days), 2,103,863 (365 days)
install-on-request: 113,067 (30 days), 298,870 (90 days), 546,065 (365 days)
build-error: 1,318 (30 days)

公式インストーラからによるPython

バージョンは3.6.8のようです。/Library/Frameworks/Python.framework/Versions/3.6/bin/python3に入っています。

zsh
~ % python3 -V
Python 3.6.8
zsh
~ % which python3
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

なぜ気づいたか

  • 研究でPythonを使おうとしたところ、入れたはずのライブラリが使えないことに気づきました
  • % echo $PATHで確認したところ、一番上に/Library/Frameworks/Python.framework/Versions/3.6/bin(これは公式インストーラによるPythonだそうです)が入っていました
    • % pip3 installをしたときに、すべて公式インストーラーによるPythonの方にライブラリがインストールされていた!

現状分析

ネットの情報を見ると、既に通したPATHを修正するには~/.zshrcを書き換えろという記事が大量に見つかります。しかし、私の環境の場合、

zsh
~ % vi ~/.zshrc

~
~
~
…

何も書かれていません。

そこで、~/.zprofileを確認します。

zsh
~ % vi ~/.zprofile


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

現れました。あまりよくわかっていないですが、ここでPATHが通されています。ですので、これを編集して無効化しましょう。

zsh
~ % vi ~/.zprofile


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

消しても良いかと思ったのですが、一応コメントアウトしておきました。iキーを押しinsertモードにして編集したあと、escしてcommandモードに戻します。:qだと保存せず終了してしまいますが、上書き保存してから終了するために:wqと打ちます。保存されているか不安ならもう一度% vi ~/.zprofileをしてみればよいです。(実際には、この変更はターミナルを再起動しないと適用されないのでここで一度再起動しましょう)

しかしこれでも

zsh
~ % which python3
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3

となり、まだ解消されていません。
そこで、

zsh
~ % cd /usr/local/bin  

から、次のように実行します。ここで、lsの-ldオプションはディレクトリの中身ではなく、それ自体の情報を表示します。また、py*で先頭にpyがつくものを検索して表示しています。これを行うと、

zsh
bin % ls -ld py* 

lrwxr-xr-x  1 root  wheel  68 10 30  2023 pydoc3 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pydoc3
lrwxr-xr-x  1 root  wheel  70 10 30  2023 pydoc3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pydoc3.6
lrwxr-xr-x  1 root  wheel  69 10 30  2023 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3
lrwxr-xr-x  1 root  wheel  76 10 30  2023 python3-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3-config
lrwxr-xr-x  1 root  wheel  71 10 30  2023 python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
lrwxr-xr-x  1 root  wheel  78 10 30  2023 python3.6-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config
lrwxr-xr-x  1 root  wheel  72 10 30  2023 python3.6m -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m
lrwxr-xr-x  1 root  wheel  79 10 30  2023 python3.6m-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config
lrwxr-xr-x  1 root  wheel  68 10 30  2023 pyvenv -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pyvenv
lrwxr-xr-x  1 root  wheel  72 10 30  2023 pyvenv-3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pyvenv-3.6

このように私の環境では表示されました。また、

zsh
~ % cd /opt/homebrew/Cellar/python@3.12/3.12.3/bin
zsh
bin % ls -l
total 24
lrwxr-xr-x  1 maoshoji  admin   53  4  9 17:09 2to3 -> ../Frameworks/Python.framework/Versions/3.12/bin/2to3
lrwxr-xr-x  1 maoshoji  admin   58  4  9 17:09 2to3-3.12 -> ../Frameworks/Python.framework/Versions/3.12/bin/2to3-3.12
lrwxr-xr-x  1 maoshoji  admin   54  4  9 17:09 idle3 -> ../Frameworks/Python.framework/Versions/3.12/bin/idle3
lrwxr-xr-x  1 maoshoji  admin   57  4  9 17:09 idle3.12 -> ../Frameworks/Python.framework/Versions/3.12/bin/idle3.12
-rwxr-xr-x  1 maoshoji  wheel  249  5  4 11:41 pip3
-rwxr-xr-x  1 maoshoji  wheel  249  5  4 11:41 pip3.12
lrwxr-xr-x  1 maoshoji  admin   55  4  9 17:09 pydoc3 -> ../Frameworks/Python.framework/Versions/3.12/bin/pydoc3
lrwxr-xr-x  1 maoshoji  admin   58  4  9 17:09 pydoc3.12 -> ../Frameworks/Python.framework/Versions/3.12/bin/pydoc3.12
lrwxr-xr-x  1 maoshoji  admin   56  4  9 17:09 python3 -> ../Frameworks/Python.framework/Versions/3.12/bin/python3
lrwxr-xr-x  1 maoshoji  admin   63  4  9 17:09 python3-config -> ../Frameworks/Python.framework/Versions/3.12/bin/python3-config
lrwxr-xr-x  1 maoshoji  admin   59  4  9 17:09 python3.12 -> ../Frameworks/Python.framework/Versions/3.12/bin/python3.12
lrwxr-xr-x  1 maoshoji  admin   66  4  9 17:09 python3.12-config -> ../Frameworks/Python.framework/Versions/3.12/bin/python3.12-config
lrwxr-xr-x  1 maoshoji  admin    9  5  4 11:41 wheel3 -> wheel3.12
-rwxr-xr-x  1 maoshoji  wheel  236  5  4 11:41 wheel3.12

このようになりました。

解決法

zsh
〜 % cd /usr/local/bin  

にまず入り、/usr/local/bin に入っているシンボリックリンクを書き換えます。つまり、

zsh
bin % ln -nfs /opt/homebrew/Cellar/python@3.12/3.12.3/bin/2to3 2to3
bin % ln -nfs /opt/homebrew/Cellar/python@3.12/3.12.3/bin/idle3 idle3
bin % ln -nfs /opt/homebrew/Cellar/python@3.12/3.12.3/bin/pydoc3 pydoc3
bin % ln -nfs /opt/homebrew/Cellar/python@3.12/3.12.3/bin/python3 python3
bin % ln -nfs /opt/homebrew/Cellar/python@3.12/3.12.3/bin/python3-config python3-config

この結果!

zsh
bin % ls -ld py* 
lrwxr-xr-x  1 root  wheel  50  7 21 16:02 pydoc3 -> /opt/homebrew/Cellar/python@3.12/3.12.3/bin/pydoc3
lrwxr-xr-x  1 root  wheel  70 10 30  2023 pydoc3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pydoc3.6
lrwxr-xr-x  1 root  wheel  51  7 21 16:02 python3 -> /opt/homebrew/Cellar/python@3.12/3.12.3/bin/python3
lrwxr-xr-x  1 root  wheel  58  7 21 16:02 python3-config -> /opt/homebrew/Cellar/python@3.12/3.12.3/bin/python3-config
lrwxr-xr-x  1 root  wheel  71 10 30  2023 python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
lrwxr-xr-x  1 root  wheel  78 10 30  2023 python3.6-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config
lrwxr-xr-x  1 root  wheel  72 10 30  2023 python3.6m -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m
lrwxr-xr-x  1 root  wheel  79 10 30  2023 python3.6m-config -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config
lrwxr-xr-x  1 root  wheel  68 10 30  2023 pyvenv -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pyvenv
lrwxr-xr-x  1 root  wheel  72 10 30  2023 pyvenv-3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/pyvenv-3.6

2to3とかはpy*に含まれていないのでここには非表示です
結果として見事、

zsh
~ % python3 -V
Python 3.12.3

成功しました!

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?