【问题标题】:After Anaconda installation, conda command fails with "ImportError: no module named conda.cli"Anaconda 安装后,conda 命令失败并显示“ImportError: no module named conda.cli”
【发布时间】:2013-11-18 11:13:03
【问题描述】:

我最近安装了 64 位 Linux 版本的 Anaconda (1.8.0-Linux-x86_64)。安装似乎工作正常:

$ python 
Python 2.7.5 |Continuum Analytics, Inc.| (default, Nov  4 2013, 15:30:26)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>>
##No issues here 

但是,如果我尝试任何 conda 命令,我会收到错误:

$ conda info
Traceback (most recent call last):
  File "~/anaconda/bin/conda", line 3, in <module>
    from conda.cli import main
ImportError: No module named conda.cli

安装在我的用户目录(~/anaconda)下。我已经验证 $PATH 包含 ~/anaconda/bin。 $PYTHONPATH 也设置为 ~/anaconda/lib。

对“conda”命令有什么问题有任何想法吗?我的搜索似乎没有显示任何其他人报告此错误。

【问题讨论】:

  • 如果取消设置 PYTHONPATH 会发生什么?
  • 谢谢@asmeurer。 unset PYTHONPATH 本身不起作用。但是,如果我还取消设置 PYTHONHOME,它就可以工作。看起来 PYTHONHOME 指向了导致此错误的不同 python 安装。
  • 一般使用Anaconda,你不需要设置那些变量。只需 $PATH。

标签: python linux anaconda


【解决方案1】:

注意

如果接受的答案不起作用,那么这个答案可能会有所帮助。

原因

根据GitHub上官方thread的说法,这个问题是在python版本发生变化时出现的。就我而言,最初的 anaconda 安装是带有 python3.6 的 anaconda 3。我安装了一个新包,它将 python 更新为python3.7 以及其他一些包。这会破坏 anaconda 基础环境。

解决方案

对我有用的解决方案非常简单...重新安装 anaconda。 我不知道这是否是最佳解决方案,但这对我有用。

  • 首先我们需要删除旧的安装:
    rm -rf ~/anaconda3
    rm -rf ~/.condarc ~/.conda ~/.continuum
    
  • 然后,重新安装 Anaconda。

  • 最后,使用以下命令更新所有包(包括 conda 本身):

    conda update --all
    

现在,您的 anaconda 是最新的。

【讨论】:

  • 好吧,这太可怕了!
  • 或者,我已经开始将python=3.6.5 包含到我的 conda 安装配方中,或者我正在使用的 conda 的任何基本 python 版本。结果相同。
  • 您正在删除所有内容!我买不起。我发现在新的 conda 安装 (see here) 中复制 envs 文件夹可以解决问题。
【解决方案2】:

当您安装它时,您错过了一个部分。当 conda 询问您是否可以设置您的 .bashrc 文件时,您可能单击了 NO。这是一个简单的解决方法:启动你的解释器并添加这一行:

export PATH=/home/add your username here/anaconda/bin:$PATH

现在在解释器中输入python,您将看到 Anaconda 1.8.0 或您拥有的任何版本。每次启动新的解释器时都必须这样做。

享受吧!

【讨论】:

  • 对我来说是:export PATH=/Users/add your username here/anaconda/bin:$PATH,但基本相同
  • 这解决了我的问题。谢谢!我将把它链接到多个 github 问题,以便更容易找到。
  • 这并不能解决我的问题,我的 .bashrc 中已经有 export PATH="/home/&lt;myusername&gt;/miniconda3/bin:$PATH" 并且它不起作用。如果我去文件夹本身也不会。
  • 现在建议不要这样做。见Conda v4.4 Release Notes
【解决方案3】:

如果 anaconda 是由 root 用户安装的,权限问题可能会产生 ImportError: No module named 'conda.cli' 错误。

像这样的

sudo chown -R [username] [anaconda_dir]

在这种情况下会有所帮助。

或者,可以将 conda 安装克隆到另一个位置,例如用户的主目录:

conda create -n [my_conda_root] --clone=[current_conda_dir]

但要使其正常工作,您至少需要读取和遍历权限。

【讨论】:

    【解决方案4】:

    我在 Miniconda3 环境中降级 python 时遇到了这个问题。在我的 Dockerimage 中。使用 Miniconda3-4.5.11-Linux-x86_64.sh 安装程序,初始基础 python 版本为 3.7.0;我想降级到 3.6.9 并得到“ImportError:没有名为 conda.cli 的模块”错误(都在同一层以减小图像的大小)。

    我通过使用 Miniconda3-4.5.4-Linux-x86_64.sh 安装程序来解决此问题(它将为您提供 python==3.6.5)并调用

    conda install -y python==3.6.9
    

    【讨论】:

      【解决方案5】:

      我通过重新安装 anaconda 来修复它,但保留 envs 文件夹。

      所以,我将旧的anaconda3 文件夹移动到anaconda3.old,我在同一位置重新安装了anaconda3,并将anaconda3.old/envs 文件夹的内容复制到anaconda3/envs。然后就成功了。

      【讨论】:

        【解决方案6】:

        我正在使用 Anaconda,我从某个地方找到了这个解决方案:

        更改:/opt/cloudera/parcels/Anaconda-5.2.0/bin/conda的内容

        #!/usr/bin/env python
        
        # -*- coding: utf-8 -*-
        import re
        import sys
        
        from conda.cli import main
        
        if __name__ == '__main__':
            sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
            sys.exit(main())
        

        #!/opt/cloudera/parcels/Anaconda/bin/python
        # -*- coding: utf-8 -*-
        import sys
        # Before any more imports, leave cwd out of sys.path for internal 'conda shell.*' commands.
        # see https://github.com/conda/conda/issues/6549
        if len(sys.argv) > 1 and sys.argv[1].startswith('shell.') and sys.path and sys.path[0] == '':
            # The standard first entry in sys.path is an empty string,
            # and os.path.abspath('') expands to os.getcwd().
            del sys.path[0]
        
        if __name__ == '__main__':
            from conda.cli import main
            sys.exit(main())
        

        【讨论】:

          猜你喜欢
          • 2018-09-29
          • 2014-10-11
          • 1970-01-01
          • 2015-09-10
          • 2018-05-24
          • 1970-01-01
          • 1970-01-01
          • 2021-03-13
          • 1970-01-01
          相关资源
          最近更新 更多