Import "requests" could not be resolved from sourcePylancereportMissingModuleSource で困った件の解決法

■発生した問題

import requests

と書くと、pylanceのエラーで

Import "requests" could not be resolved from sourcePylancereportMissingModuleSource

となり、実際requests関連のコードを書いても、requestsモジュールがインポートされていないと注意される。

■問題の解決

1.  何がどこでどうなっているか、確認

まずはバージョン

python --version

# command not foundになったら↓
python3 --version

# Python 3.9.6 とか出てくる

次に、インストールされている場所

which python3

#  /usr/bin/python3

ここまでの状態がmacにデフォルトでインストールされているpythonらしい。

この状態だと

pip3 install requests

を実行しても「すでにインストールしてます」みたいなメッセージしか出てこない。

2. Visual studio code の内部の問題を疑った

VSコードのSettingに

「pythonpath」

と検索

pythonをpython3に変更する

でも問題は解決されず。(結局最後は「python」に戻した)

さらに、Visual studio codeエクスプローラーが表示されない問題が...

結局Visual studio code は再インストールした。

rm -rf /Applications/Visual\ Studio\ Code.app/
rm -rf ~/Library/Application\ Support/Code
rm -rf ~/.vscode/

3. macでのPythonのデフォルトをHomebrewに切り替える

デフォルトのpythonでは、同じことの繰り返しになったので、HomebrewのPythonを使うことにする。

brew install python@3.11

# 「brew search python」 でインストールできるpythonのバージョンを確認できる。その中で新しいのを選んだ。

環境変数を通さなきゃならないらしい。.zshrcに環境変数を追加してみる。

cd ~/.zshrc

# .zshrcの最終行に追記
export PATH="/usr/local/opt/python@3.11/libexec/bin:$PATH"

でも

which python3

#  /usr/bin/python3

が変わらない....。

できれば

which python3

#  /usr/homebrew/bin/python3
# とか
# /usr/local/bin/python3
# となってほしい

環境変数をいじる類は全部ダメで、最後に以下のコマンドがうまくいった!

brew link --overwrite python3

ここまでの状態をセットすると、pythonの呼び出しは

pthhon3    ❌
でなく
python      ⭕️

になっていた。これで改めて

python --version
# Python 3.11.3

which python
# /usr/local/opt/python@3.11/libexec/bin/python

となったことが確認できた!

4.  Pythonのデフォルト場所が変わって、初めてpipコマンドでライブラリが有効になった!

最後に、必要なライブラリをpipコマンドでインストール。

これも、pip3ではなくpipである必要があった。

# まずはあるかどうか念のため確認。一番最初のmacの環境では「ある」と表示された
pip show requests
→WARNING: Package(s) not found: requests

# 無事に無いことが確認できたので、インストール
pip install requests

■参考URL