导入错误:Jupyter笔记本中的DLL加载失败但在.py文件

时间:2017-09-21 21:10:18

标签: python anaconda jupyter-notebook swig python-importlib

我在Anaconda环境中安装了BreakoutDetection模块。当我尝试在jupyter笔记本中使用import breakout_detection导入模块时,出现以下错误

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-18-96c0fdb15b96> in <module>()
----> 1 import breakout_detection

C:\Users\sgadiyar\AppData\Local\Continuum\Anaconda2\lib\site-packages\breakout_detection.py in <module>()
     15         except ImportError:
     16             return importlib.import_module('_breakout_detection')
---> 17     _breakout_detection = swig_import_helper()
     18     del swig_import_helper
     19 elif _swig_python_version_info >= (2, 6, 0):

C:\Users\sgadiyar\AppData\Local\Continuum\Anaconda2\lib\site-packages\breakout_detection.py in swig_import_helper()
     14             return importlib.import_module(mname)
     15         except ImportError:
---> 16             return importlib.import_module('_breakout_detection')
     17     _breakout_detection = swig_import_helper()
     18     del swig_import_helper

C:\Users\sgadiyar\AppData\Local\Continuum\Anaconda2\lib\importlib\__init__.pyc in import_module(name, package)
     35             level += 1
     36         name = _resolve_name(name[level:], package, level)
---> 37     __import__(name)
     38     return sys.modules[name]

ImportError: DLL load failed: The specified procedure could not be found.

我可以在python shell中导入相同的模块

我查看了系统路径(print sys.path)以及python shell和jupyter notebook。它们都是一样的。可执行路径(print sys.executable)对于两者也是相同的。

有人可以帮我解决这个问题需要采取的步骤吗?谢谢!

9 个答案:

答案 0 :(得分:29)

我从PowerShell运行jupyter notebook时遇到了相同的问题。即使一年后才问这个问题,我还是在这里回答这个问题,以帮助那些最近遇到相同错误的人。就我而言,首先,我激活了根环境activate base,然后运行了jupyter notebook,它运行良好。激活基础后,您会注意到提示将像这样“(base)X:\ Users \ xxxxx \ current-directory-name>”进行更改。

  • 注意,命令activate base在Powershell上不起作用。您必须切换到运行cmd的命令提示符,否则 可以在命令提示符而不是PowerShell上尝试整个操作。

  • 如果需要的路径
    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) 对您的PowerShell环境可用,那么您不需要
    激活“基本”环境。

答案 1 :(得分:11)

在Windows中,首先由

在命令提示符下激活根目录(基础)
activate root

然后

jupyter notebook

答案 2 :(得分:2)

如果您已经将anaconda添加到PATH变量中,则必须执行以下操作

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

对我有用

答案 3 :(得分:1)

当我导入sklearn时,我遇到了同样的问题。我猜一些pakages需要升级。所以我只是运行( conda update --all )来升级所有的pakages,它终于奏效了。< / p>

答案 4 :(得分:1)

我最近将Anaconda重新安装到新目录(从D:到C :)。之后,打开并运行PowerShell(在Windows 10中)导致它抛出相同的错误。

通过遵循@picklu的回答,我能够从CMD临时运行它(通过运行“ activate base”,然后运行“ jupyter notebook”)。甚至“激活根目录”也起作用,而不是激活基础。还可以从conda提示符,anaconda导航器和Jupyter Notebook的默认快捷方式运行它。但是,使用这些方法,我无法从打开PowerShell窗口的文件夹开始(通过使用Ctrl + Shift + mouseRightCLick)。

但是,通过遵循@picklu回答的第二部分,我能够成功地将系统变量PATH从旧的D:驱动器更改为当前的C:。

我添加了以下内容:

  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

其中c:\ users \ USERNAME \ anaconda3是anaconda的安装位置。

答案 5 :(得分:0)

如果我们查看Anaconda FAQ,我们会发现不建议将Anaconda添加到Windows PATH。

尽管它应该可以工作,但是手动管理所有必需的路径并不是一件容易的事。举个例子,在撰写本文时,这里没有一个答案具有Anaconda在我的机器上添加的所有路径。我们可以使用os模块获取列表:

对于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']

对于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'])

就我而言,我有以下Anaconda路径:

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;

这仅适用于基本环境。如果您有其他环境,则每个环境都有类似的路径。您是否真的要全部添加,更新它们,并确保在新的Anaconda版本中进行了某些更改后,您没有错过任何内容?

我对此表示怀疑。好消息是您不必这样做。激活环境后,将自动为您配置所有路径。

仅将Scripts文件夹添加到PATH可能是有用的,以便您可以在没有完整路径的情况下运行activate。然后为Python解释器或Jupyter Notebook创建一堆.bat/.cmd文件可能会很方便,这将简化环境激活并允许您使用一个命令完成所有操作。

例如,我的机器上有两个用于Python 2和Python 3解释器的.cmd文件:

python.cmd

@echo off
call activate
python %*

python3.cmd

@echo off
call activate python37
python %*

包含这些文件的文件夹已添加到PATH,因此当我运行pythonpython3命令时,将激活相关的conda环境,并在适当的上下文中启动Python解释器。如果将cmdline参数传递给解释器,它们也将正确转发。可以为Jupyter创建类似的脚本。

答案 6 :(得分:0)

在卸载所有Microsoft Visual Studio C ++可再发行组件之后,我也遇到了此问题。 我安装了 Visual Studio 2015、2017和2019 后,此问题已修复。

您可以在The latest supported Visual C++ downloads

上找到它

答案 7 :(得分:0)

我尝试了上述所有解决方案,但直到安装了最新版本的Microsoft Visual C++后,它才对我有用。

答案 8 :(得分:0)

我通过将文件C:\ Anaconda3 \ Libary \ bin \ sqlite3.dll复制到C:\ Anaconda3 \ Dlls来解决了这个问题