ろむめも

気になったこととか、調べたことをゆるくまとめます。主にプログラミング関連の話題が多いです。

PycharmでJupyter(IPython)からの自作モジュールimportがImportError: No module named *** と出た時の対処法

現象

Pycharm上でJupyter Notebook(IPythonでも同じ現象がでるのでしょうか?)を起動して、自作のモジュールをimportしたときに以下のエラーが発生し、importできませんでした。
f:id:romth:20161208210402p:plain
visualsというのが自作のモジュール。
実行したipynbファイルと同じディレクトリにvisuals.pyとして保存されている状態です。

環境

対処法

前回と同様に公式にメールで問い合わせた結果、Jupyterにワークスペースを設定してあげる必要があるとの事です。これで無事importが認識されました!
メニューバーの[File]>[Settings]から[Language&Frameworks]>[Jupyter Notebook]に入ると、Working directoryがあるので、そこにipynbファイルのパスを入力します。
f:id:romth:20161208210954p:plain
ちなみにWorking directoryはJupyter Notebookをどこのディレクトリ上で起動するかという設定との事です。
この設定がされていなかったのでJupyterがほかのディレクトリで起動しおり、visualsの場所がわからず、importができなかったという事でした。この設定はプロジェクトを変えた場合にそのパスを再設定する必要があります。

また、余談ですが、Pycharmにはsource rootという概念も用意されているようです。
Source rootとして設定したディレクトリはPycharm上でのimport読み込み対象ディレクトリとなります。
sys.path.append()のようなimportのpath設定のことでしょうか。
設定方法はプロジェクトエクスプローラから対象のディレクトリ、ファイルを右クリックしてset as source rootを選択するだけです。
PyCharm 2016.3 Help :: Content Root

一応確認中なのでわかったら追記します。
(2016.12.9)追記しました