49

我最近安装了 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”命令有什么问题的任何想法?我的搜索似乎没有显示任何其他人报告此错误。

4

6 回答 6

46

笔记

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

原因

根据 GitHub 上的官方线程,当 python 版本发生变化时会出现此问题。就我而言,最初的 anaconda 安装是 anaconda 3 with python3.6. 我安装了一个新包,它python3.7与其他一些包一起更新了 python。这会破坏 anaconda 基础环境。

解决方案

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

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

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

    conda update --all
    

现在,您的 anaconda 是最新的。

于 2019-08-27T12:37:35.217 回答
18

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

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

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

享受!

于 2013-12-11T10:26:24.573 回答
5

如果 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]

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

于 2015-11-23T03:48:39.153 回答
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
于 2019-11-08T14:14:32.097 回答
1

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

因此,我将旧anaconda3文件夹移动到anaconda3.old,我在同一位置重新安装了 anaconda3 并将anaconda3.old/envs文件夹的内容复制到anaconda3/envs. 然后它起作用了。

于 2021-03-15T10:13:15.720 回答
0

我正在使用 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())
于 2020-01-07T15:48:02.423 回答