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

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

我在 Anaconda 环境中安装了 BreakoutDetection 模块。当我尝试在 jupyter notebook 中使用 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) 也相同。

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

导入sklearn时遇到了同样的问题。我想有些软件包需要升级。所以我只是 运行 (conda update --all) 升级了所有的包,终于成功了。

我遇到了同样的问题 运行 来自 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 环境,那么您不需要 激活 "base" 环境。

在 windows 中,首先通过

在命令提示符中激活 root(base)
activate root

然后

jupyter notebook

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

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

对我有用

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

通过遵循@picklu 的回答,我能够运行 它暂时从CMD(通过运行宁'activate base'然后'jupyter notebook')。甚至 'activate root' 也可以代替激活基础。此外 运行 从 conda 提示符、anaconda 导航器和 Jupyter Notebook 的默认快捷方式运行它。但是,使用这些方法我无法从我打开 PowerShell window 的文件夹开始(通过使用 Ctrl+Shift+ mouseRightCLick)。

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

我添加了以下内容:

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

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

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

虽然它应该可以工作,但手动管理所有需要的路径并不容易和直接。例如,在我撰写本文时,此处答案的 none 包含 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 文件可能会很方便,这将简化环境激活并允许您使用一个命令完成所有事情。

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

python.cmd:

@echo off
call activate
python %*

python3.cmd:

@echo off
call activate python37
python %*

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

我卸载了所有 Microsoft Visual Studio C++ 可再发行组件后也遇到了这个问题。 我安装 Visual Studio 2015、2017 和 2019.

后修复了

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

上找到它

我尝试了上述所有解决方案,但在我安装最新版本 Microsoft Visual C++ 之前对我不起作用。

我通过将文件 C:\Anaconda3\Libary\bin\sqlite3.dll 复制到 C:\Anaconda3\Dlls

解决了这个问题

无论在哪个虚拟环境中爆发,只需使用以下方式激活环境:

conda activate <env-name>

然后 re-install 笔记本使用:

pip install notebook

在我从 windows 10 升级到 windows 11 之前,它在 Base 和虚拟环境中都运行良好。