« 前のひとこと | トップページ | 次のひとこと »

cocolog:91626630

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

JRF 2020年1月22日 (水)

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

JRF2020/1/224218

……。

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 ファイルが警告は出るものの動くことを確認する。

JRF2020/1/221378

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

JRF2020/1/222808

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

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

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

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

JRF2020/1/225406

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

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

…が、改善しない。

JRF2020/1/228607

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

《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

JRF2020/1/221962

……。

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

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

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

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

JRF2020/1/224979

……。

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

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

JRF2020/1/228653

……。

……。

追記。

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

JRF2020/1/287305

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

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

JRF2020/1/288002

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

JRF2020/1/280168

« 前のひとこと | トップページ | 次のひとこと »