web-dev-qa-db-ja.com

インポートエラー:DLLロードはJupyterノートブックで失敗しましたが、.pyファイルで動作しています

BreakoutDetection Anaconda環境のモジュールをインストールしました。 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)も同じです。両方のために。

誰かがこの問題を解決するために私がとるべきステップで助けてくれますか?ありがとう!

9
ultramarine

PowerShellからjupyter Notebookを実行すると、同じ問題が発生しました。質問は1年前に尋ねられましたが、最近同じエラーに遭遇した人を助けるためにここで答えています。私の場合、まず、ルート環境をアクティブにしました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環境で使用できる場合、必要はありません。
    「ベース」環境をアクティブにします。

33
picklu

Windowsでは、コマンドプロンプトでアクティブなルート(ベース)を最初に

activate root

それから

jupyter notebook
14
Dheeraj

PATH変数に既にanacondaを追加している場合は、次を実行する必要があります

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

それは私のために働いた

2
Akash Desarda

Sklearnをインポートするときに同じ問題が発生しました。一部のパッケージをアップグレードする必要があると思います。( conda update --all )を実行してすべてのパッケージをアップグレードすると、最終的に機能しました。

2
Raywall

最近、Anacondaを新しいディレクトリに再インストールしました(D:からC:に)。その後、PowerShell(Windows 10)を開いて実行すると、同じエラーがスローされました。

@pickluの回答に従うことで、CMDから一時的に実行することができました( 'base baseを実行してから' jupyter Notebook 'を実行する)。ベースのアクティブ化の代わりに、「ルートのアクティブ化」でも機能しました。また、condaプロンプト、anacondaナビゲーター、およびJupyter Notebookのデフォルトのショートカットから実行しました。ただし、これらの方法を使用すると、PowerShellウィンドウを開いたフォルダーから起動できませんでした(Ctrl + Shift + mouseRightCLickを使用)。

しかし、@ pickluの答えの2番目の部分に従うことで、システム変数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のインストール場所です。

1
Hemang

Anaconda FAQ を見ると、Windows PATHにAnacondaを追加することは推奨されないことがわかります。

動作するはずですが、必要なすべてのパスを手動で管理するのは本当に簡単で簡単ではありません。例として、ここに書いている時点での答えには、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を実行できるように、activateフォルダーをPATHに追加するだけで便利な場合があります。そして、PythonインタープリターまたはJupyter Notebook用の.bat/.cmdファイルの束を作成すると便利です。これにより、環境のアクティブ化が簡素化され、1つのコマンドですべてを実行できます。

たとえば、私のマシンにはPython 2およびPython 3インタープリター)の2つの.cmdファイルがあります。

python.cmd

@echo off
call activate
python %*

python3.cmd

@echo off
call activate python37
python %*

これらのファイルを含むフォルダーがPATHに追加されるため、pythonまたはpython3コマンドを実行すると、関連するconda環境がアクティブになり、Pythonインタープリターが開始されます適切なコンテキストcmdlineパラメーターをインタープリターに渡すと、それらも正しく転送されます同様のスクリプトは、Jupyter用に作成できます。

0
wombatonfire