Conda包管理器:自定义通道

2020-04-21 17:32:37 浏览数 (1)

最近整理系统时将之前的Anaconda环境全部删除,在重新安装时由于网络连接问题导致很多包和环境无法顺利安装。便想着将所用包全部下载下来,然后通过本地安装,这样以后会方便很多,下面就是关于如何使用conda自定义通道。

conda本身提供了自定义通道的功能,可以使用web服务器或是本地 file:// 链接。

为了创建自定义通道,首先要在各平台子目录中构建所有安装包:

代码语言:javascript复制
channel/
 linux-64/
   package-1.0-0.tar.bz2
 osx-64/
   package-1.0.0-0.tar.bz2

通常,各系统平台名为 win-64, win-32, linux-64,linux-32, 和 osx-64 。

其次,就是在各系统平台子目录下执行 conda index 命令,比如:

代码语言:javascript复制
$ conda index channel/linux-64 channel/osx-64

注意

conda index 命令是 conda build 包的一部分,因此,你可能需要先运行 conda install conda-build

执行 conda index 命令后会产生 repodata.json 文件,用于获取通道中包的元数据信息。当你向通道中新加包或是改变了通道中的安装包时,需要重新运行 conda index。

通道的链接(url) 可以不包括系统部分,因为conda会自动添加。比如,通道在 /opt/anaconda/channel ,那么通道 url 就是 file:///opt/anaconda/channel

注意

通道链接中 file:/// 有三个 / 。前两个/ 就像是 http:// 中的两个 /,第三个 / 表示通道绝对路径的开始。

最后,编辑 .condarc 文件,添加本地自定义通道的路径信息。

当然,使用 conda install 命令也可以直接安装本地包,但是在构建虚拟环境时还是使用自定义通道更方便。


题外话

如果使用anaconda默认通道安装包时,大多数情况下速度都会非常慢,建议大家使用清华大学的开源镜像站的链接进行下载,这样速度会快很多。

注意

如果添加了清华大学的镜像站链接,在安装时就不需要指定通道了。

代码语言:javascript复制
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 设置安装软件包时显示包的通道链接信息
conda config --set show_channel_urls yes

尤其是清华大学同步了 conda-forge 的安装包到镜像站,相对于直接连接 conda-forge 的原通道,这样速度会快很多。

代码语言:javascript复制
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

但是要注意,在安装时就不要指定conda-forge了,否则还是使用官方通道。比如,安装 pynio和pyngl时:

代码语言:javascript复制
# 使用官方通道
conda create --name pyn_test --channel conda-forge pynio pyngl
# 使用清华镜像通道
conda create --name pyn_test pynio pyngl

因为,使用 conda-forge 别名,就是指向官方通道链接。

对于在 Jupyter 中使用 R 的来说,清华大学同样提供了 r-essentials 的镜像安装包。添加以下通道即可:

代码语言:javascript复制
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/

注意

安装时同样不需要指定通道。

0 人点赞