如何从 Anaconda 中删除 URL 通道?

Posted

技术标签:

【中文标题】如何从 Anaconda 中删除 URL 通道?【英文标题】:How can I remove a URL channel from Anaconda? 【发布时间】:2017-01-26 06:23:39 【问题描述】:

最近我需要使用 Anaconda 将 PyPdf2 安装到我的一个程序中。不幸的是,我失败了,但是添加到 Anaconda 环境的 URL 禁止更新所有 Conda 库。 每次我尝试更新 anaconda 时,它都会给出以下信息

conda update conda
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata ..........Error: Invalid index file: https://pypi.python.org/pypi/PyPDF2/1.26.0/win-64/repodata.json: No JSON object could be decoded

我输入了命令 conda info 来查看导致错误的原因,我发现很多指向 PyPdf2 的 URL!

简单地说,我想从 anaconda 的频道 URL 中删除所有这些 URL,我该怎么做?无论手动还是自动。

注意:我已经卸载了 Anaconda,然后重新安装,但没有成功!

C:\WINDOWS\system32>conda info
Using Anaconda Cloud api site https://api.anaconda.org
Current conda install:

             platform : win-64
        conda version : 4.1.6
    conda-env version : 2.5.1
  conda-build version : 1.21.3
       python version : 2.7.12.final.0
     requests version : 2.10.0
     root environment : C:\Anaconda2  (writable)
  default environment : C:\Anaconda2
     envs directories : C:\Anaconda2\envs
        package cache : C:\Anaconda2\pkgs
         channel URLs : https://pypi.python.org/pypi/PyPDF2/1.26.0/win-64/
                        https://pypi.python.org/pypi/PyPDF2/1.26.0/noarch/
                        https://conda.anaconda.org/C:\Python27\Lib\site-packages\PyPDF2/win-64/
                        https://conda.anaconda.org/C:\Python27\Lib\site-packages\PyPDF2/noarch/
                        https://conda.anaconda.org/X:\Downloads\Compressed\PyPDF2-master\/win-64/
                        https://conda.anaconda.org/X:\Downloads\Compressed\PyPDF2-master\/noarch/
                        https://github.com/mstamy2/PyPDF2/zipball/master/win-64/
                        https://github.com/mstamy2/PyPDF2/zipball/master/noarch/
                        https://pypi.python.org/pypi/PyPDF2/win-64/
                        https://pypi.python.org/pypi/PyPDF2/noarch/
                        https://pythonhosted.org/PyPDF2/win-64/
                        https://pythonhosted.org/PyPDF2/noarch/
                        https://github.com/mstamy2/PyPDF2/win-64/
                        https://github.com/mstamy2/PyPDF2/noarch/
                        https://repo.continuum.io/pkgs/free/win-64/
                        https://repo.continuum.io/pkgs/free/noarch/
                        https://repo.continuum.io/pkgs/pro/win-64/
                        https://repo.continuum.io/pkgs/pro/noarch/
          config file : C:\Users\Dr. Mohammad Elnesr\.condarc
         offline mode : False
    is foreign system : False

【问题讨论】:

你检查过C:\Users\Dr. Mohammad Elnesr\.condarc 吗? 是的,我做到了,我在那里找到了文件。谢谢 明天早上我会在办公室写详细的解决方案。 【参考方案1】:

您只需执行以下命令即可用新网址覆盖旧网址:

conda install --override-channels -c https://repo.anaconda.com/pkgs/main/win-64/beautifulsoup4-4.6.0 正在获取包元数据.....

然后会有一个问题要求继续安装更新的软件包,y 是答案,完成后您可以通过执行“conda info”来查看更改,这将显示当前路径。

【讨论】:

【参考方案2】:

希望我的回答可以帮助其他使用 Mac OS 终端的人。我不小心将“new_channel”添加到我的频道列表中,但不知道如何删除它。我也找不到 .condarc 文件(也许有人会启发我),但我能够使用终端来完成此操作。

Conda 中有两种类型的“渠道”。一个是频道,一个是频道 URL。如果您尝试删除频道 URL,则无法使用以下方法将其删除:

conda config --remove channels

最初我输入conda info 并看到以下内容:

频道网址:

         https://repo.anaconda.com/pkgs/pro/osx-64
         https://repo.anaconda.com/pkgs/pro/noarch
         https://conda.anaconda.org/new_channel/osx-64
         https://conda.anaconda.org/new_channel/noarch

所以我在想,好吧,让我输入以下内容。

conda config --remove channels https://conda.anaconda.org/new_channel/osx-64

这不起作用。

你需要做的是输入以下内容:

conda config --show channels

您将看到您的频道:

渠道:

默认值

new_channel

现在您知道您的频道叫什么了。它被称为 new_channel(可能看起来很明显,但有时对我们初学者来说不是)。

所以你输入:

conda config --remove channels new_channel

然后,所有的 new_channel URL 都消失了。

在 OP 的情况下,他的频道很可能被称为 PyPdf2

所以在终端中输入的正确代码是:

conda config --remove channels PyPdf2

再次提醒,不要尝试删除频道 URL。确保删除频道本身。

【讨论】:

【参考方案3】:

扩展 Mohammed 的answer。

您在conda info 中看到的所有这些网址都是您的频道网址。这些是 conda 寻找软件包的地方。正如@cel 所指出的,这些频道可以在您的主目录的.condarc 文件中找到。

您可以使用conda config 命令与.condarc 文件中的通道和其他数据进行交互。例如,假设您的 .condarc 文件列出了以下频道:

channels:
  - https://github.com/mstamy2/PyPDF2/  
  - defaults

然后如果我们执行conda config --get channels,我们将看到返回:

--add channels 'defaults'   # lowest priority
--add channels 'https://github.com/mstamy2/PyPDF2/'   # highest priority

如果我们想删除 github 频道,我们会做 conda config --remove channels 'https://github.com/mstamy2/PyPDF2/'。您还可以通过--add 命令添加频道,例如,我们可以使用conda config --add channels 'https://github.com/mstamy2/PyPDF2/' 添加回该频道。

在这种情况下,由于要删除多个频道,直接编辑.condarc 可能更快,但通过conda config 知道如何操作会很有用。

【讨论】:

【参考方案4】:

幸运的是,我找到了答案(也感谢@cel)。

我导航到C:\Users\MyUserName\ 然后我发现了一个没有名称但扩展名奇怪的文件(.condarc)我用记事本++打开它,我发现文件如下>

然后我删除了除最后一行之外的所有行,保存文件,然后运行命令conda update conda,它可以正常工作。

【讨论】:

这绝对有效。您也可以使用conda config 来管理您的频道。例如,使用conda config --get channels 列出您的频道并使用conda config --remove channels 'X' 删除频道X 谢谢@Paul 为什么不将其添加为答案以将其标记为已接受? 我无法使用 conda config --remove channels 删除频道。我不得不从 .condarc 文件中删除它。

以上是关于如何从 Anaconda 中删除 URL 通道?的主要内容,如果未能解决你的问题,请参考以下文章

Anaconda:从 PyPi 包构建时出错(“当前 linux-64 通道中缺少包 XY”)

如何完全从 Windows 中删除 anaconda?

RAFT 配置问题:如何从特定通道中删除节点,但保持它为其他通道提供服务

Jupyter notebook 中 从url中load 数据集, 会存在哪里?

踩坑:anaconda创建虚拟环境

重新安装Anaconda失败 - 删除Anaconda和系统之间的所有冲突