Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 导入cvxopt.base:找不到指定的模块_Module_Python 3.x - Fatal编程技术网

Module 导入cvxopt.base:找不到指定的模块

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构建为

我是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构建为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虚拟环境,步骤如下:

  • 打开蟒蛇提示
  • condacreate-npython=3.5
  • 康达激活
  • 在激活的conda环境中,使用以下命令安装cvxopt包: 康达安装cvxopt

    这将安装cvxopt包和所有依赖项

    安装后,通过在Anaconda提示符中键入spyder打开spyder,这将使用您创建的虚拟环境打开spyder

    在此之后,cvxopt包将无任何错误地工作


    注意:我一直试图在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

  • 打开“系统属性”窗口并单击“高级”选项卡
  • 单击底部的“环境变量”按钮
  • 在用户变量部分,选择路径并单击编辑
  • 将包含mkl_rt.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'