Posted at

【Pycharm】同じ階層のpythonファイルをインポートしようとするとエラーが発生するときの対処法


pythonの問題ではなくpycharmの問題で嵌った話

pythonでは自分で書いたプログラムの関数をライブラリとしてインポートできる便利な機能がある。

同じ階層にある、前に作ったあの関数を使いたい。そんな時にpycharmでエラーが出ました。

No module named ~


原因の切り分け

最初は原因がわからなかったため、とりあえずコンソールからインポートできるか試してみると実行できました。

つまり、この問題はpycharm側の問題であるとわかりました。


原因

調べていく中で、ライブラリとしてインポートするにはプログラムの親ディレクトリがsources rootである必要があるようです。これは一応便利機能の一つだと思います。

このディレクトリをsources rootに指定すると、プロジェクト内のどのディレクトリでインポートしてもsources rootをルートディレクトリとした絶対パスで指定できる、つまりfromなどを使ったパスの指定をする必要がなくなるというものです。

代償としてpure pythonのようにディレクトリの相対パスで指定するとエラーが出るようです。


解決方法

野蛮な方法として、使いたいプログラムがあるディレクトリを右クリック、Mark Directory as でsources rootを指定することでエラーが消えて使えるようになりました