Import error: DLL load failed in Jupyter notebook but working in .py file

主宰稳场 提交于 2019-11-30 13:17:30

I encountered the same problem running jupyter notebook from PowerShell. Even though the question was asked a year back, I am answering it here to help those who encounter the same error recently. In my case, first, I activated the root environment activate base then I ran jupyter notebook and it worked just fine. Once you activate the base, you will notice that the prompt will change like this "(base) X:\Users\xxxxx\current-directory-name>".

  • Note that the command activate base will not work on Powershell. You have to switch to command prompt running cmd or you may try the whole thing on the command prompt instead of PowerShell.

  • If the required paths
    (path:\to\Anaconda3\;path:\to\Anaconda3\Scripts;path:\to\Anaconda3\Library\mingw-w64\bin;path:\to\Anaconda3\Library\usr\bin;path:\to\Anaconda3\Library\bin) are available to your PowerShell environment then you don't need to
    activate the "base" environment.

In windows, active root(base) in command prompt first by

activate root

then

jupyter notebook

If you have already added anaconda to PATH variable then you have to do the following

activate base jupyter kernelspec list python -m ipykernel install --user

It worked for me

I met the same problem when I import sklearn.I guess some pakages need upgrated.So I just run (conda update --all) to upgrate all the pakages,and it finally worked.

I recently re-installed Anaconda to a new directory (from D: to C:). After that, opening and running PowerShell (in Windows 10) caused it to throw the same errors.

By following @picklu 's answer I was able to run it temporarily from the CMD (by running 'activate base' and then 'jupyter notebook'). Even 'activate root' worked instead of activate base. Also running it from conda prompt, anaconda navigator and the default shortcut for Jupyter Notebook worked. However, using these methods I wasn't able to start from the folder I had opened the PowerShell window in (by using Ctrl+Shift+ mouseRightCLick).

However, by following the second part of @picklu 's answer I was able to successfully change the system variable PATH from the old D: drive to the current C: .

I added the following:

  1. c:\users\USERNAME\anaconda3
  2. c:\users\USERNAME\anaconda3\scripts
  3. c:\users\USERNAME\anaconda3\library\bin
  4. c:\users\USERNAME\anaconda3\library\usr\bin

where c:\users\USERNAME\anaconda3 is the anaconda install location.

If we look at the Anaconda FAQ, we can find that it's not recommended to add Anaconda to the Windows PATH.

While it should work, it's not really easy and straightforward to manage all the needed paths manually. As an example, none of the answers here at the time of my writing has all the paths, which Anaconda adds on my machine. We can get the list using os module:

For Python 2:

Python 2.7.15 |Anaconda, Inc.| (default, Feb 21 2019, 11:55:13) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ['PATH']

For Python 3:

Python 3.7.2 (default, Feb 21 2019, 17:35:59) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print(os.environ['PATH'])

In my case, I have the following Anaconda paths in it:

C:\Anaconda;
C:\Anaconda\Library\mingw-w64\bin;
C:\Anaconda\Library\usr\bin;
C:\Anaconda\Library\bin;
C:\Anaconda\Scripts;
C:\Anaconda\bin;
C:\Anaconda\condabin;

And this is just for the base environment. If you have additional environments, there will be similar paths for each of them. Do you really want to add them all, update them, and make sure you haven't missed any if something is changed with new Anaconda release?

I doubt it. And the good news is that you don't have to. All the paths are configured for you automatically when you activate the environment.

It might only be usefull to add the Scripts folderto PATH, so that you can run activate without a full path. And then it might be handy to create a bunch of .bat/.cmd files for Python interpreters or Jupyter Notebook, which will simplify environment activation and allow you to do everything with one command.

For example, I have two .cmd files for Python 2 and Python 3 interpreter on my machine:

python.cmd:

@echo off
call activate
python %*

python3.cmd:

@echo off
call activate python37
python %*

A folder with these files is added to PATH, so when I run python or python3 command, the relevant conda environment is activated and the Python interpreter is started in the appropriate context. If you pass cmdline parameters to the interpreter, they are also forwarded correctly. Similar scripts can be cretated for Jupyter.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!