0
0

More than 3 years have passed since last update.

Visual Studio CodeでPythonのモジュールが読み込めなくなった時に試すこと

Last updated at Posted at 2020-11-16

解決法

「Code → Preferences → Settings」を選択します。もしくは、「command + ,」というショートカットキーでもOKです。
スクリーンショット 2020-11-13 17.54.22.png

右上にある小さなアイコンをクリックして開きます。
スクリーンショット 2020-11-13 17.56.09.png

settings.jsonというファイルが開かれます。Visual Studio Codeのパスの読み込み先を編集できるので、ここに「python.pythonPath〜」を設定して下さい。パス自体はお手元の環境次第かと思いますので、それを設定して下さい。
はじめからここにpythonのパスがある場合は上書き、無い方は新しく書き込んでしまって良いと思います。
念のため、元に戻せるようにしておいて下さい。
スクリーンショット 2020-11-13 17.59.00.png

おまけ

ついでにpythonがどのパスを読み込んでいるのか確認する方法をご紹介します。
百聞は一見に如かずということでまずはスクリーンショットをご覧ください。パッと見て「なるほどー」となる方は早速試してみて下さい。
ちょっと怖いという方には簡単な説明をします。
スクリーンショット 2020-11-13 18.20.50.png

まずはホームディレクトリでpythonを起動します。
(元々Macにあるpython2系と区別するため、私はpython3というコマンドで起動しています。皆さんも環境に合わせたコマンドをお使いください)

pythonが起動すると「>>>」というのが出ますので、これでpythonと対話できます。
「import sys」と打ってEnterを押します。(何も起こりませんがそれで大丈夫です。)
「import pprint」と打ってEnterを押します。(何も起こりませんがそれで大丈夫です。)
「pprint.pprint(sys.path)」と打ってEnterを押します。
ここでpythonがパスを教えてくれます。
上から順に読み込んでいるので、この中でモジュールがある場所のパスをコピーしてvscodeのsettings.jsonにペーストして下さい。
「control + D」でpythonとの対話を終了できます。

もしも想定していたパスが無い、というようなことがあればパスを通す作業が必要になりますので、それは別途調べてみて下さい。
また、それぞれのコマンドについても詳しいことは割愛させていただきます。

個人的にはpprintを使うというのがポイントです。ただパスを聞くと横にズラズラと書かれて吐き出されるのでとてもよみづらい…というのを解決する一工夫です。

経緯

ある日突然、それまで使えていたモジュールがimportエラーになっていました。具体的なエラー内容は忘れてしまったのですが、たぶん「そんな名前のモジュール無いよ」という感じだったと思います。
それまで使えていたのにそんなはずは無かろう…という気持ちでしたが、ふと、anyenvを入れたことを思い出し、パスの読み込み先が変わったのでは無いかと推測しました。
まずはローカルの環境変数(python2系と3系のパスの読み込み先、優先順位、pipでインストールしたモジュールの格納場所を調べたりetc)を色々と血眼になっていじっていたのですが、最終的に上記の方法で解決しました。
まさかエディタ側を調整するとは思わなかった…まだまだ修行が足りませんね。
ちなみに、色々とパスをいじっているうちにどんなコマンドさえターミナルで反応しないという危機的状況も経験しましたが、こちらは割とすぐ解決しました。
(インターネット上のあらゆる情報提供者に感謝します!)

ただ、まだ少し疑問に思っていることがありまして…
いくつかimportしているうちの1つだけ(具体的にはjaconv)急に使えなくなったのは何故なのかということです。
同じファイルで別のモジュールは使えているにもかかわらず何故これだけエラーになってしまったのか…
そしてこの解決策は最善なのか…という点が気になります。
もし原因など判明したら追記します。

0
0
1

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