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

问题描述 投票:7回答:6

我在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笔记本。它们都是一样的。可执行路径(print sys.executable)对于两者也是相同的。

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

python anaconda jupyter-notebook swig python-importlib
6个回答
30
投票

我遇到了从PowerShell运行jupyter笔记本时遇到的同样问题。尽管这个问题是在一年前提出来的,但我在这里回答它是为了帮助那些最近遇到同样错误的人。在我的情况下,首先,我激活了根环境activate base然后我运行jupyter notebook,它工作得很好。激活基础后,您会注意到提示将改变为“(基本)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环境使用,但您不需要 激活“基础”环境。

14
投票

在Windows中,首先在命令提示符下激活root(base)

activate root

然后

jupyter notebook

2
投票

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

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

它对我有用


1
投票

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


1
投票

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

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

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

我添加了以下内容:

  1. C:\ Users \用户名\ anaconda3
  2. C:\ Users \用户名\ anaconda3 \脚本
  3. C:\ Users \用户名\ anaconda3 \库\ BIN
  4. C:\ Users \用户名\ anaconda3 \库的\ usr \ BIN

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


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 folderto 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创建类似的脚本。

© www.soinside.com 2019 - 2024. All rights reserved.