Conda:配置基础学习


解释

conda的作用

Conda是一个开源的包管理系统环境管理器,它主要用于安装和管理软件包以及创建和维护不同的软件环境。Conda最初是为Python程序设计的,但现在已经支持多种语言,包括R、Ruby、Lua、Scala等。

Conda的主要功能包括:

  • 包管理:Conda可以安装、更新和卸载软件包,这些软件包可以是Python库,也可以是其他语言的库或工具。
  • 环境管理:Conda允许用户创建隔离的工作环境,每个环境可以有不同的软件包和版本,这样可以避免不同项目之间的依赖冲突。
  • 跨平台:Conda支持多个平台,包括Linux、macOS和Windows。
  • 易于使用:Conda的命令行界面简洁直观,易于学习和使用。
  • 社区支持:Conda有一个庞大的社区,许多流行的软件包都可以通过Conda进行安装。

Conda是为了解决以下问题而设计的:

  • 依赖管理:在软件开发中,不同项目可能需要不同版本的库,Conda可以帮助管理这些依赖关系,确保项目的兼容性。
  • 环境隔离:开发人员可以在不同的环境中工作,而不必担心全局安装的软件包会影响其他项目。
  • 简化安装过程:Conda可以自动处理软件包的安装过程,包括下载、编译和配置。
  • 跨语言支持:Conda不仅限于Python,它支持多种编程语言的软件包管理。

版本跟新

相关命令

conda --version#查看版本
conda -V#查看版本
conda update conda#更新版本
conda info#查看conda详细信息
conda config --set notify_outdated_conda false#阻止更新提示

环境管理

环境管理

使用conda,可以「创建、导出、列出、删除和更新」安装了不同版本Python和/或包的环境。在环境之间切换或移动称为「激活环境activating」。还可以共享环境文件。

创建相关命令

#1.创建
conda create -n <env-name>#创建环境
conda create -n myenvironment python numpy pandas#创建环境并添加对应的包
conda create -n myenv python=3.9#创建环境并指定python版本
'''
#创建环境并且自动安装对应的包
要在每次创建新环境时自动安装pip或其他程序,请将默认程序添加到`.condarc`配置文件的create_default_packages部分。每次创建新环境时都会安装默认包。如果不希望在特定环境中安装默认包,使用--no-default-packages标志:
'''
conda create --no-default-packages -n myenv pytho#不默认安装包
conda env create -f environment.yml#通过yam文件创建环境


conda create --prefix ./envs jupyterlab=3.2 matplotlib=3.5 numpy=1.21#指定环境位置到envs目录
conda activate ./envs#激活envs目录的环境
'''
创建环境时「指定项目目录子目录」的路径有以下好处:
1.通过将环境作为子目录包含在内,可以轻松判断项目是否使用隔离环境。
2.它使项目更加独立,因为包括所需软件在内的所有内容都包含在单个项目目录中。
3.可以对所有环境使用相同的名称。如果将所有环境保存在envs文件夹中,必须为每个环境命名。

将conda环境放置在默认envs文件夹之外时,需要注意一些事情:
1.Conda无法再使用--name标志找到环境。通常需要传递--prefix标志以及环境的完整路径来查找环境,`(/absolute/path/to/envs)`2.在创建conda环境时指定安装路径会使命令提示符出现在以活动环境的绝对路径而不是环境名称为前缀。(/Users/USER_NAME/research/data-science/PROJECT_NAME/envs) $

要在shell提示符中删除此长前缀,请修改. condarc文件中的env_prompt设置:
1.conda配置env_prompt({name})
如果已经有一个.condarc文件,将编辑.condarc文件,如果没有,则创建一个.condarc文件。
现在命令提示符将显示活动环境的通用名称,即环境根文件夹的名称:
$ cd project-directory
$ conda activate ./env
(env) project-directory $
'''

更新相关命令

出于各种原因,您可能需要更新环境。例如,:

  • 核心依赖项之一刚刚发布了一个新版本(依赖项版本号更新)。
  • 要一个额外的数据分析包(添加一个新的依赖项)。
  • 找到了一个更好的包并且不再需要旧包(添加新依赖项并删除旧依赖项)。

如果发生其中任何一种情况,需要做的就是相应地更新环境environment.yml文件的内容,然后运行以下命令:

conda env update --file environment.yml --prune
#--prune选项使conda从环境中删除不再需要的任何依赖项。

复制环境

conda create --name myclone --clone myenv

激活环境

conda activate myenv#激活环境
conda activate#回到base环境
conda activate ./envs#激活存放在envs目录下的环境
'''
默认情况下,conda激活将在激活新环境之前停用当前环境,并在停用新环境时重新激活它。有时可能希望保留当前环境PATH条目,以便可以继续轻松地从第一个环境访问命令行程序。这在基本环境中安装常见命令行实用程序时最常遇到。要在PATH中保留当前环境,可以使用以下方法激活新环境:
'''
conda activate --stack myenv
'''
如果希望从最外层环境(通常是基本环境)开始时始终堆栈,可以设置auto_stack配置选项:
'''
conda config --set auto_stack 1

停用环境

conda deactivate

列出环境

conda info --envs#查看所有创建的环境和active(*)环境
conda env list#查看所有创建的环境和active(*)环境

列出环境所安装的包

conda list -n myenv#没有激活环境下查看环境的包
conda list#查看激活的环境的包
conda list -n myenv scipy#查看特定的包是否安装

分享环境

conda env export > environment.yml#导出环境的依赖文件,包括conda和pip
conda env export --from-history#只导出在创建环境时指定的包

恢复环境

conda env export --from-history#查看历史环境
onda install --revision=REVNUM#恢复到具体环境REVNUM
conda install --rev REVNUM#恢复到具体环境REVNUM

删除环境

conda remove --name myenv --all
conda remove --name myenv

包管理

安装包命令

conda install matplotlib#安装包
conda install --name myenvironment matplotlib#通过命令行选择包
conda install scipy=0.15.0#安装具体的包
conda install scipy curl#同时安装多个包
#切换通道安装包
conda install conda-forge::numpy#使用conda-forge通道来安装包
conda install -c pandas bottleneck#使用pandas通道来安装包
#搜索包
conda search scipy
conda search --override-channels --channel defaults scipy#默认频道搜索

#查看安装的包
conda list

'''
如果一个软件包无法从conda或Anaconda.org获得,可以通过conda-forge或使用其他软件包管理器(如pip)找到并安装该软件包。
如果当前conda环境内外都安装了pip实例,则使用当前conda环境内安装的pip实例。
为了获得conda集成的好处,请务必在当前活动的conda环境中安装pip,然后使用该pip实例安装包。命令conda列表显示以这种方式安装的包,标签显示它们是使用pip安装的。
'''

更新包

conda update biopython#更新特定的包
conda update python#更新python版本
conda update conda#更新conda

删除包

conda remove -n myenv scipy#删除myenv环境下的scipy包
conda remove scipy#删除当前环境下的scipy包
conda remove scipy curl#删除多个包

通道管理

通道

不同的通道可以有相同的包,因此conda必须处理这些通道冲突。

如果只使用默认频道,则不会发生频道冲突。如果使用的所有频道只包含列表中任何其他频道中不存在的包,也不会发生频道冲突。只有当您的频道列表中有多个频道托管同一个包时,conda解决这些冲突的方式才重要。

默认情况下,conda更喜欢来自更高优先级通道的包,而不是来自较低优先级通道的任何版本。因此,可以安全地将频道放在频道列表的底部,以提供不在默认频道中的附加包,并且仍然确信这些频道不会覆盖核心包集。

Conda在所有列出的渠道中收集所有同名的包,并按如下方式处理它们:

  • 从最高到最低通道优先级对包进行排序。
  • 将绑定包(具有相同通道优先级的包)从最高到最低版本号排序。例如,如果channelA包含NumPy1.12.0和1.13.1,NumPy1.13.1将被排序得更高。
  • 将仍然绑定的包(具有相同通道优先级和相同版本的包)从最高到最低构建号排序。例如,如果channelA包含NumPy1.12.0build 1和build 2,则build 2首先排序。channelB中的任何包都将在channelA中的包之下排序。
  • 安装排序列表中满足安装规范的第一个包。

添加通道

conda config --get channels#查看所有通道
conda config --add channels new_channel
conda config --prepend channels new_channel#两个写法效果相同,优先级最高
conda config --append channels new_channel#优先级最低

文章作者: Hkini
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hkini !
评论
  目录