【问题标题】:Import error: DLL load failed in Jupyter notebook but working in .py file导入错误:Jupyter 笔记本中的 DLL 加载失败,但在 .py 文件中工作
【发布时间】:2018-03-03 08:30:04
【问题描述】:

我在 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)也相同。

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

【问题讨论】:

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


    【解决方案1】:

    我在 PowerShell 中运行 Jupyter Notebook 时遇到了同样的问题。尽管这个问题是在一年前提出的,但我在这里回答它是为了帮助那些最近遇到同样错误的人。就我而言,首先,我激活了根环境activate base,然后运行jupyter notebook,它工作得很好。激活基础后,您会注意到提示将更改为:(base) X:\Users\xxxxx\current-directory-name&gt;

    • 注意命令 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 环境,那么您不需要 激活“基础”环境。

    【讨论】:

    • 这对我有用。注意:对于 Windows Server (2016 Datacenter),您可以跳过 path:\to\Anaconda3\Library\usr\bin
    • 如果要换到base以外的环境怎么办?
    • Anaconda 的真正目的是拥有不同的工作环境。因此,仅在基础环境中运行 Jupyter 不是解决方案。
    • 我所做的只是将目录添加到 PATH 变量中,它对我有用。
    • 感谢您的回答。我错过了“激活基地”。
    【解决方案2】:

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

    activate root
    

    然后

    jupyter notebook
    

    【讨论】:

    • 虽然这可行,但我的问题是“为什么我必须激活环境?”我以前不需要
    • @ScottieB 我认为它是更多控制环境的新强制性功能。就是这样
    【解决方案3】:

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

    通过遵循@picklu 的回答,我能够从 CMD 临时运行它(通过运行“激活基础”,然后运行“jupyter 笔记本”)。即使是“激活根”也可以代替激活基础。还可以从 conda 提示符、anaconda 导航器和 Jupyter Notebook 的默认快捷方式运行它。但是,使用这些方法,我无法从打开 PowerShell 窗口的文件夹开始(通过使用 Ctrl+Shift+m​​ouseRightCLick)。

    但是,通过遵循@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 安装位置。

    【讨论】:

    • 您似乎认为 Picklu 的答案有效……这应该是评论,而不是单独的答案,因为您没有提出新的建议
    • 谢谢!我尝试了一切,但添加所有路径对我有用。
    • 这是我一开始的怀疑。感谢您将其作为单独的答案拼写出来。
    【解决方案4】:

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

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

    它对我有用

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        如果我们查看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 创建类似的脚本。

        【讨论】:

          【解决方案7】:

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

          你可以在The latest supported Visual C++ downloads找到它

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

                在它爆发的任何虚拟环境中,只需使用以下命令激活环境:

                conda activate &lt;env-name&gt;

                然后使用以下命令重新安装笔记本:

                pip install notebook

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-03-14
                  • 1970-01-01
                  • 2019-12-11
                  • 1970-01-01
                  • 2021-05-20
                  • 2021-02-13
                  相关资源
                  最近更新 更多