cocolog:91626630
Jupyter Notebook で venv の Python 3.6 上の TensorFlow 1.x が ImportError: DLL load failed になる。その venv でコマンドラインの .py ではちゃんと import されるのに! (JRF 3733)
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 ファイルが警告は出るものの動くことを確認する。
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
…結局、コマンドラインの venv から jupyter notebook コマンドを実行することで解決した。
JRF2020/1/224218