どういう状況か?
IntelliJを使用するとき、当然のことながらライブラリの場所がわからなければそれを使用することはできない。 しかしIDEは賢いので多くの場合デフォルトの設定でサードパーティのライブラリは設定したインタプリタから自動的にモジュールの場所をPYTHONPATHへ追加してくれる。 ただし、自作のモジュールやパッケージは解決できなかったのでその備忘録。
5箇所の設定を確認しよう
設定1:Pythonプラグインは有効になっているか
これは初めてIntelliJを使用する場合のみ起こりうる。
VScode等と同様にIntelliJにも同様にPlugingが存在し、これは[IntelliJ]-> Preference ->Plugin
からインストールできる。
インストール直後は再起動が必要(メッセージが出る)なので注意が必要。
設定2:Project StructureのModule設定
これは言語混合モジュールについてありがちな原因。新規プロジェクトを作成する際やモジュールを追加する際に、IntelliJではProjectSDKを設定し直すことになる。 上記の場合ははモジュール(ディレクトリ)毎に使用するSDKが違うので、モジュール追加後に各モジュールで使用するSDK(インタプリタ)を設定し直す必要がある。 以下の画面で、自分が想定しているインタプリタが設定されていればひとまずは問題ないと言える。
設定3:正しいインタプリタが設定されているか
多くの場合、Pythonを利用する人は、venv(virtualenv)かpynevを使用して環境を分離していると思う。
その場合当然のことながらIntelliJでは使っている環境のインタプリタを指定する必要がある。
これらは[File] -> ModuleStructure
から確認することができる。
Pythonだけのプロジェクトであれば、ProjectSDKで指定しているものが現在選択されている。
もし設定されてるものがSystemのインタプリタで、開発環境のものでない場合はNew -> Existing Environment
から自分が今使っているインタプリタを設定しよう。
例えばpyenvを使用しているならば、$HOME/.pyenv/versions/${your_pyenv_name}/bin/python
が設定すべき値となる。
設定4:PreferenceのPython Console
これはおそらくいじる必要性はないものだと思うが、Preferenceでも各Projectの設定がある。
ここで青枠で囲っている部分を確認しよう。
これらが入っていれば基本的に困ることは無いと思う。
特に上のadd content roots to PYTHONPATH
と下側のStarting Script
の設定は大事なので確認したほうがよい。
設定5:モジュールのコンテンツルートが設定されているか
これは設定4と関連があるが、IntelliJでは読み込む対象をファイル単位で設定できる。
以下のようにProject Structure -> Module
から対象のモジュールを選択し、pathタブを選択することで確認が可能である。
Pythonでは基本的にSouces
とExclude
を設定すればよい。前者が読み込み対象で後者は除外である。
除外をするメリットは、読み込み対象を減らすことでIntelliJの動作のパフォーマンスが向上する。規模が大きくなると顕著なので是非設定したい。
設定4と、ここでSources
を適切に設定すれば、同じパッケージ内の自作モジュールが使えない(ように見える)現象が解決されるだろう。
最後にそれでもだめ場合は…
これらの対処でも修正されない場合、キャッシュを削除してみよう。 そしてそれでも修正されないのであれば、間違いなくなにかのファイルが壊れているので一度IntelliJ再インストールしてみることをおすすめする。(一度このケースに遭遇したことがある。)