Search code examples
pythonmachine-learningcntk

CNTK (Microsoft Cognitive Toolkit) ImportError


Code:

import cntk
n = cntk.minus([1, 2, 3], [4, 5, 6]).eval()
print(n)

Problem:

If run the code line by line in python command line, it's ok.

If run "Python main.py", it's also ok.

But if run the code in PyCharm or Visual Studio Code, error occurs, PyCharm error dump:

Traceback (most recent call last):
File "D:\Apps\Anaconda3\envs\Python3.53\lib\site-packages\cntk\cntk_py.py", line 18, in swig_import_helper
  return importlib.import_module(mname)
File "D:\Apps\Anaconda3\envs\Python3.53\lib\importlib\__init__.py", line 126, in import_module
  return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'cntk._cntk_py'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/Dev/machine_learning/Test_CNTK/main.py", line 1, in <module>
    import cntk
  File "D:\Apps\Anaconda3\envs\Python3.53\lib\site-packages\cntk\__init__.py", line 11, in <module>
    from .core import *
  File "D:\Apps\Anaconda3\envs\Python3.53\lib\site-packages\cntk\core.py", line 10, in <module>
    from . import cntk_py
  File "D:\Apps\Anaconda3\envs\Python3.53\lib\site-packages\cntk\cntk_py.py", line 21, in <module>
    _cntk_py = swig_import_helper()
  File "D:\Apps\Anaconda3\envs\Python3.53\lib\site-packages\cntk\cntk_py.py", line 20, in swig_import_helper
    return importlib.import_module('_cntk_py')
  File "D:\Apps\Anaconda3\envs\Python3.53\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: DLL load failed: The specified module could not be found.

Environment:

  • Anaconda: 4.3.1
  • Python: 3.5.3 (virtual environment in anaconda)
  • CNTK: 2.0beta12 for windows amd64 GPU
  • PyCharm: 2016.3.2
  • Visual Studio Code: 1.10.2

Solution

  • Solved

    Because it can't find the DLL files with CNTK (e.g. CNTKLibrary-2.0.dll, EvalDll.dll), these DLLs are in the same directory of "python.exe" after installation of CNTK.

    There are 2 solutions:

    (suppose the PYTHONDIR is the directory where python.exe is in)

    1. change the system environment PATH to include PYTHONDIR

    2. add the following code before "import cntk":

      import os; os.environ['PATH'] = PYTHONDIR + ';' + os.environ['PATH']