種別[statuses] cocolog:91626630
セクションJRF のひとこと
日時2020年01月22日
元URLhttp://jrf.cocolog-nifty.com/statuses/2020/01/post-718549.html

Jupyter Notebook で venv の Python 3.6 上の…

Jupyter Notebook で venv の Python 3.6 上の TensorFlow 1.x が ImportError: DLL load failed になる。その venv でコマンドラインの .py ではちゃんと import されるのに!
JRF 2020年1月22日

…結局、コマンドラインの venv から jupyter notebook コマンドを実行することで解決した。

JRF 2020年1月22日

……。

Windows 10 に Anaconda 3 2019.10 をインストール。その後 conda update conda と conda update --all して、jupyter_client をアップデート(こうしないとバーチャル環境 venv が Permission Denied でまともに使えない。)。

そして venv を python=3.6 tensorflow=1.15 で create。以前、作った .py ファイルが警告は出るものの動くことを確認する。

JRF 2020年1月22日

<pre>
conda install -n myenv ipykernel
conda activate myenv
ipython kernel install --user --name=myenv
</pre>

JRF 2020年1月22日

こうした上で、Windows のスタートメニューから Jupyter Notebook を起動。

そこで ipynb ファイルで import tensorflow as tf とすると、

<pre>
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
</pre>

…などというエラーが出た。

JRF 2020年1月22日

いろいろ調べて↓から辿った Microsoft Visual C++ の修正版を DL してインストール。

《【Python】Windows10にTensorflowとKerasがインストールできない時の解決法》
https://tkstock.site/2018/06/27/post-436/

…が、改善しない。

JRF 2020年1月22日

似た報告は↓にもあった!

《python - Import error: DLL load failed in Jupyter notebook but working in .py file - Stack Overflow》
https://stackoverflow.com/questions/46353215/import-error-dll-load-failed-in-jupyter-notebook-but-working-in-py-file

JRF 2020年1月22日

……。

結局、Windows のスタートメニューからではなく、Anaconda Prompt 上で…

<pre>
conda activate myenv
start jupyter notebook
</pre>

…などとすることで、解決した。

Python 3.6 上から jupyter を起動する必要があった…ということなのだろう。

JRF 2020年1月22日

……。

ちなみに、私は環境変数 HOME を Emacs 用に設定していたため、そこでもはまった。初期ディレクトリが変更できなかったのだ。それは↓を見て一旦は解決したが、結局、上のように Anaconda Prompt から jupyter notebook を実行するようになったので無駄になった。

《Jupyter Notebookの初期ディレクトリを変更できなかったときの対処法 - Qiita》
https://qiita.com/skytomo221/items/8f07734a63a3e7c15860

JRF 2020年1月22日

……。

……。

追記。

あれ? 前に conda create -n myenv python=3.6 tensorflow=1.13.1 keras で仮想環境を作ったときは、%HOME%\.conda\envs 以下にファイルが置かれたのに、今 conda create -n myenv tensorflow=2 にしたところ %HOMEPATH%\Anaconda3\envs 以下にファイルが置かれた。

JRF 2020年1月28日

私のところでは jupyter notebook --generate-config して作られた jupyter_notebook_config.py の c.NotebookApp.notebook_dir を設定しても初期ディレクトリが変更できなかったんだよね。

もしかすると、上で書いた「Python 3.6 上から jupyter を起動する必要があった」ということよりも %HOME% と %HOMEPATH% を別に設定していたのがまずかったんじゃなかろうか…。

JRF 2020年1月28日

まぁ、原因の推測がまちがっていても、上で書いた解決策は変わらないのだが…。

JRF 2020年1月28日

後方参照 (1 件)