"import cntk" 从命令行工作,但在 PyCharm 中不工作

"import cntk" works from command line but not in PyCharm

我正在使用 Anaconda3、python 3.6.1 和 PyCharm 2017.1.5。

使用 conda,我可以很好地执行以下操作:

(C:\Anaconda3) C:\Users\tim>activate cntk

(注:cntk是conda虚拟环境)

(cntk) C:\Users\tim>python
Python 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:25:24) 
[MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cntk

在这里它等待了一段时间...但是有效。

>>> print(cntk.__version__)
2.0

所以,工作正常。

到 PyCharm:

我有一个文件 tutorial101.py,它只包含 import cntk

运行 这个在 PyCharm:

C:\Anaconda3\envs\cntk\python.exe C:/coding/python/cntk-sandbox/tutorial101.py
Traceback (most recent call last):
  File "C:\Anaconda3\envs\cntk\lib\site-packages\cntk\cntk_py.py", line 18, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Anaconda3\envs\cntk\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'cntk._cntk_py'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/coding/python/cntk-sandbox/tutorial101.py", line 1, in <module>
    import cntk
  File "C:\Anaconda3\envs\cntk\lib\site-packages\cntk\__init__.py", line 10, in <module>
    from . import cntk_py
  File "C:\Anaconda3\envs\cntk\lib\site-packages\cntk\cntk_py.py", line 21, in <module>
    _cntk_py = swig_import_helper()
  File "C:\Anaconda3\envs\cntk\lib\site-packages\cntk\cntk_py.py", line 20, in swig_import_helper
    return importlib.import_module('_cntk_py')
  File "C:\Anaconda3\envs\cntk\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.

Process finished with exit code 1

为什么这在命令行中有效,但在 PyCharm 中却无效?我究竟做错了什么?我找不到满意的答案anywhere.

问题是当您使用 Pycharm 时设置的系统环境不包括 C:\Anaconda3 目录作为 Windows 文件系统搜索路径的一部分。此目录必须出现在搜索路径中,因为 CNTK DLL 将已安装(假设是标准 conda 安装)到该目录。

您可以通过将 C:\ANACONDA3(或安装 CNTK 的路径)添加到系统的 PATH 环境变量来解决此问题。

您可以在 System->Advanced System Settings->Environment Variables 下访问 Windows 中的环境变量,然后通过选择它并单击 Edit 向系统 PATH 变量添加一个新行。

伊恩

我最终将 D:\Docs\Anaconda3\Lib\site-packages\cntk 添加到我的路径中 因为我在 D:\Docs\Anaconda3

安装了 anaconda

以防其他人遇到这个问题,我在使用 VS2015 时遇到了同样的问题。在环境变量 PATH 中添加正在使用的虚拟环境的路径(例如 C:\Users\<your user name>\AppData\Local\Continuum\Miniconda2\envs\<environment with cntk>),然后重新启动 visual studio 解决了问题

当在Anaconda Console中switching/activatingconda环境时,脚本会set/change一堆环境变量。好像PyCharm没有模拟这样的操作。我希望 PyCharm 可以提供更好的解决方案,我通过将 "C:\Users\AppData\Local\Continuum\anaconda3\envs\" 添加到环境变量来解决这个问题。

我是这样处理的:

  1. 在PyCharm导航栏的右上角,有一个下拉菜单,上面有您当前的型号名称。选择 "Edit Configurations..."
  2. 在右侧的window窗格中,您应该可以看到"Configuration"选项卡,并且在"Environment"会话中,有"Environment variables:"输入框
  3. 点击“...”编辑环境变量
  4. 点击“+”,添加"PATH"变量,值设为"C:\Users\AppData\Local\Continuum\anaconda3\envs\"
  5. 保存更改