【问题标题】:import cvxopt.base: the specified module could not be foundimport cvxopt.base:找不到指定的模块
【发布时间】:2013-02-08 17:35:46
【问题描述】:

我是 Python 新手,刚刚为我的 Python3.3 系统(64 位)安装了 cvxopt 模块。安装成功,但是当我在Python命令行中输入"import cvxopt"时返回错误:

文件 "C:\Program 文件 (x86)\Python\lib\site-packages\cvxopt__init__.py",第 33 行,在 import cvxopt.base ImportError: DLL load failed: The 找不到指定的模块。

谁能帮我解决这个问题?非常感谢!

【问题讨论】:

    标签: module python-3.x


    【解决方案1】:

    dll 加载问题的原因很可能是一个非常不同的原因。最新的 Anaconda 版本(例如 Anaconda 5.0.1)具有支持 MKL 的 Numpy。这不是问题。我通过使用 conda list 查看已安装的软件包来验证这一点。问题在于 cvxopt 需要一些 dll,它们位于目录中

    C:\Anaconda3\envs\foo\Library\mingw-w64\bin  
    

    如果您安装 Anaconda 并且 NOT 在系统路径上注册 Anaconda python(这是他们建议的设置),然后使用 Anaconda 提示设置新环境(注意当前版本cvxopt 你需要 Python 3.5)

    conda create -n foo python=3.5
    activate foo
    
    conda install cvxopt
    

    并导入 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
    >>> 
    

    一切都应该正常。如果你检查 Anaconda 相关的路径设置你会发现

    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.
    >>>
    

    但是还有另一个与 PyCharm 相关的问题:如何在 PyCharm 中正确使用 Anaconda 环境? PyCharm 无法处理环境所需的其他路径。至少不是开箱即用,或者我没有找到正确的方法。欢迎提出任何建议。

    【讨论】:

      【解决方案2】:

      您需要将 YourPythonPath\Library\bin 添加到 PATH 环境变量中。就我而言,它是 C:\Python36-64\Library\bin

      【讨论】:

      • 谢谢,这对我也适用于 Python 3.5.4。 Not sure why I didn't need this last time,但我当时可能有不同版本的 Python。
      • 如果您在 PyCharm 中工作,您可能需要在更改 PATH 后关闭并重新打开 PyCharm,以便它注意到更改。
      • 在我重新启动 Python(在我的情况下,重新启动 VSCode)之后,这也对我有用。我使用 Python 3.7。注意:我在添加 PATH 变量后还卸载了cvxopt,然后重新安装了它(使用 pip),也许这也是它起作用的原因)
      【解决方案3】:

      CVXOPT包需要numpy+mkl,你可以尝试卸载numpy包并从http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy重新安装numpy+mkl,然后导入CVXOPT,就可以了。

      【讨论】:

      • 当前版本的 Anaconda(例如 Anaconda 5.x)具有对 Numpy 的 MKL 支持。这不可能是问题。请参阅下面的答案。
      • 这对我有用。确保下载与当前 python 版本关联的 .whl,并且不要忘记卸载 numpy,如前所述:pip uninstall numpy。谢谢@张宝凯!
      • 这对我有用,即使其他人提到 Anaconda 的 numpy 的新版本也应该支持 mkl。我尝试将 \Library\bin 路径添加到 PATH 环境变量中,它也不起作用。
      【解决方案4】:

      在导入 cvxopt 之前需要先导入 numpy。

      import numpy
      import cvxopt
      

      【讨论】:

      • 我看不出添加导入如何改变任何东西。请进一步解释。 (另外,这个解决方案对我不起作用。)
      • 这不是问题,请参阅下面的评论。
      • Welp,对我来说也没有意义,但这对我有用。谢谢。 +1。
      • 卸载 numpy,然后安装 numpy+mkl,如下所示由 Baokai Zhang (lfd.uci.edu/~gohlke/pythonlibs/#numpy)。还要确保您安装了 python 64 位版本。同意这没有多大意义,但对我来说: import numpy 然后 import cvxopt 就是这样工作的。
      【解决方案5】:

      我修好了。只需将路径 C:\Python36\Library\bin 添加到 PATH 环境变量中,就像 Artashes Khachatryan 所说的那样。 当我导入 cvxopt 库时,它运行 base.cp36-win_amd64 文件,该文件需要 bin 文件夹中的 dll。

      【讨论】:

        【解决方案6】:

        cvxopt.base 被构建为一个 pyd 文件(本质上是一个 Windows DLL)。它应该位于“C:\Program Files (x86)\Python\lib\site-packages\cvxopt”中。检查该目录是否在您的 PYTHONPATH 中。如果不是,您可以从命令行将目录附加到您的路径,如下所示:

        import sys
        sys.path.append("C:\Program Files (x86)\Python\lib\site-packages\cvxopt")
        

        希望有帮助!

        【讨论】:

        • 我先尝试过,但没有帮助。请参阅下面的更长答案。
        【解决方案7】:

        我在导入 cvxopt 模块时遇到了同样的 ImportError 问题。由于cvxopt支持python 2.7-3.5版本,我先用python 3.5创建了一个conda虚拟环境,步骤如下:

        1. 打开 Anaconda 提示
        2. conda create -n python=3.5
        3. conda 激活

        在激活的 conda 环境中使用命令安装 cvxopt 包: conda 安装 cvxopt

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

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

        在此 cvxopt 包将正常工作后不会出现任何错误。

        注意:我一直在尝试在 Pycharm 中打开虚拟环境,但没有成功,最后切换到了 spyder。

        【讨论】:

          【解决方案8】:

          我遇到了同样的问题,解决方法是迁移到 python 3.5(通过创建虚拟环境)。请注意,不幸的是 cvxopt 不适用于 python 3.6。

          【讨论】:

            【解决方案9】:

            我在 PyCharm 2018.1 与 Conda 环境结合使用时遇到了这个问题。当我从 Anaconda 终端运行以下命令时,一切正常:

            conda activate cvxopt_test
            python -c "import cvxopt"
            

            但是,在 PyCharm 中运行 import cvxopt 时,会引发您描述的错误。正如 Daniel 在他的 anwser 中提到的,这与 windows PATH 变量 (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 变量中可能是明智的。

            【讨论】:

              【解决方案10】:
              1. 打开“系统属性”窗口并单击“高级”选项卡。
              2. 点击底部的环境变量按钮。
              3. 在用户变量部分,选择路径并单击编辑。
              4. 将包含 mkl_rt.dll 的目录添加到路径中。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2017-11-05
                • 2023-04-01
                • 2012-08-08
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-11-09
                • 1970-01-01
                相关资源
                最近更新 更多