Module 导入cvxopt.base:找不到指定的模块
我是Python新手,刚刚为我的Python 3.3系统(64位)安装了cvxopt模块。安装成功,但当我在Python命令行中键入Module 导入cvxopt.base:找不到指定的模块,module,python-3.x,Module,Python 3.x,我是Python新手,刚刚为我的Python 3.3系统(64位)安装了cvxopt模块。安装成功,但当我在Python命令行中键入“import cvxopt”时,它返回了一个错误: 文件“C:\程序文件 (x86)\Python\lib\site packages\cvxopt\uuuuu init\uuuuuuuu.py”,第33行,在 导入cvxopt.base ImportError:DLL加载失败:该 找不到指定的模块 有人能帮我解决这个问题吗?非常感谢 cvxopt.base构建为
“import cvxopt”
时,它返回了一个错误:
文件“C:\程序文件
(x86)\Python\lib\site packages\cvxopt\uuuuu init\uuuuuuuu.py”,第33行,在
导入cvxopt.base ImportError:DLL加载失败:该
找不到指定的模块
有人能帮我解决这个问题吗?非常感谢 cvxopt.base构建为pyd文件(本质上是一个Windows DLL)。它应该位于“C:\ProgramFiles(x86)\Python\lib\site packages\cvxopt”中。检查此目录是否位于PYTHONPATH中。如果不是,则可以从命令行将目录附加到路径,如下所示:
import sys
sys.path.append("C:\Program Files (x86)\Python\lib\site-packages\cvxopt")
希望有帮助 在导入cvxopt之前,需要先导入numpy
import numpy
import cvxopt
软件包CVXOPT需要numpy+mkl,您可以尝试卸载numpy软件包并从中重新安装numpy+mkl,然后导入CVXOPT,它就会工作。dll加载问题的原因很可能与此完全不同。最新的Anaconda版本(如Anaconda 5.0.1)具有带MKL支持的Numpy。这不是问题所在。我通过使用conda列表查看已安装的软件包来验证这一点。问题在于cvxopt需要一些DLL,它们位于目录中
C:\Anaconda3\envs\foo\Library\mingw-w64\bin
如果您安装了Anaconda,并且没有在系统路径上注册Anaconda python(这是他们的建议设置),然后使用Anaconda Prompt设置一个新环境(注意,对于cvxopt的当前版本,您需要python 3.5)
以及输入cvxopt
(foo) C:\tmp>python
Python 3.5.4 |Anaconda, Inc.| (default, Nov 8 2017, 14:34:30) [MSC v.1900
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cvxopt
>>>
一切都应该很好。如果您检查与蟒蛇相关的路径设置,您将发现
C:\Anaconda3\envs\foo;
C:\Anaconda3\envs\foo\Library\mingw-w64\bin;
C:\Anaconda3\envs\foo\Library\usr\bin;
C:\Anaconda3\envs\foo\Library\bin;
C:\Anaconda3\envs\foo\Scripts;
如果现在从路径中删除C:\Anaconda3\envs\foo\Library\mingw-w64\bin,则返回问题所在
C:\tmp>python
Python 3.5.4 |Anaconda, Inc.| (default, Nov 8 2017, 14:34:30) [MSC v.1900
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cvxopt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda3\envs\tf14\lib\site-packages\cvxopt\__init__.py", line 32, in <module>
import cvxopt.base
ImportError: DLL load failed: The specified module could not be found.
>>>
C:\tmp>python
Python 3.5.4 | Anaconda,Inc.|(默认,2017年11月8日,14:34:30)[MSC v.1900]
win32上的64位(AMD64)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>进口cvxopt
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Anaconda3\envs\tf14\lib\site packages\cvxopt\\uuuuu init\uuuuuu.py”,第32行,在
导入cvxopt.base
ImportError:DLL加载失败:找不到指定的模块。
>>>
然而,还有另一个与PyCharm相关的问题:如何在PyCharm中正确使用Anaconda envs?PyCharm无法处理环境所需的其他路径。至少我还没有开箱,或者我没有找到一个合适的方法。欢迎任何建议。我在导入cvxopt模块时遇到了相同的导入问题。由于cvxopt支持python版本2.7-3.5,因此我首先使用python 3.5创建了一个conda虚拟环境,步骤如下:
注意:我一直试图在Pycharm中打开虚拟环境,但没有成功,最后切换到spyder。我遇到了同样的问题,并且解决了迁移到python 3.5(通过创建虚拟环境)的问题。请注意,不幸的是,cvxopt不能与python 3.6一起使用。我在PyCharm 2018.1中与Conda环境结合使用时遇到了这个问题。当我从Anaconda终端运行以下程序时,一切正常:
conda activate cvxopt_test
python -c "import cvxopt"
但是,在PyCharm中运行import cvxopt
时,会引发您描述的错误。正如Daniel在他的anwser中提到的,这与windows路径变量(os.environ['PATH'])
有关。不知何故,PyCharm在运行代码时不会添加cvxopt文件夹。对我来说,避免错误的最简单的工作示例是:
import os
# add the folder containing the DLL to the PATH variable
os.environ['PATH'] += r';C:\Anaconda3\envs\foo\Library\mingw-w64\bin'
尽管将Daniel提到的所有文件夹以相同的方式添加到PATH变量可能是明智的 您需要将pythonpath\Library\bin添加到PATH环境变量中。在我的例子中,它是C:\Python36-64\Library\bin,我修复了它。只需将路径C:\Python36\Library\bin添加到path环境变量中,与Artash Khachatryan所说的相同。 当我导入cvxopt库时,它运行base.cp36-win_amd64文件,该文件需要bin文件夹中的dll
我不认为添加导入可能会改变任何事情。请进一步解释。(还有,这个解决方案对我不起作用。)这不是问题,请看我下面的评论。嗯,对我来说也没什么意义,但这对我起作用了。谢谢+1.卸载numpy,然后安装numpy+mkl,如张宝凯所示()。还要确保已安装python 64位版本。同意这没有多大意义,但对我来说:导入numpy然后导入cvxopt就是这样工作的。当前版本的Anaconda(例如Anaconda 5.x)对numpy有MKL支持。这不可能是问题所在。请看下面我的答案。这对我很有效。确保下载与当前python版本相关的.whl,并且不要忘记卸载numpy,如前所述:
pip uninstall numpy
。谢谢@Baokai Zhang!这对我来说是可行的,尽管其他人提到了新版本的Anaconda的numpy也应该支持mkl。我尝试将\Library\bin路径添加到path环境变量中,但也不起作用。我先尝试了,但没有帮助。看见
import os
# add the folder containing the DLL to the PATH variable
os.environ['PATH'] += r';C:\Anaconda3\envs\foo\Library\mingw-w64\bin'