zoukankan      html  css  js  c++  java
  • 包管理器conda与Python

    什么是conda?

    conda是一个包管理器。值得注意的是,它不仅仅是Python的包管理器,而是一个通用的包管理器,当初设计时被用来管理任何语言的包。在目前来看,conda环境中所有语言的包管理,都是为了Python而服务的。

    Anaconda与Miniconda

    Anaconda是一个Python的发行版,内置了众多Python包和附加软件(pydata生态圈里的软件),所以Anaconda自然内置了conda。

    而Miniconda则提供了一个最小的conda安装环境,十分干净轻巧。

    conda与pip

    conda和pip均可以用来管理Python依赖包,但二者也仅仅在包管理这个子集上有交集

    pip和conda处理包的底层机制各不相同,pip使用wheels,conda是二进制编排。conda对于底层C代码的依赖处理得更好。

    conda与virtualenv

    conda和virtualenv都可以创建虚拟环境,进行Python运行环境的隔离。

    你也可以在virtualenv中使用conda,但强烈不建议混用两者

    conda环境

    使用Anaconda / Miniconda

    Miniconda只包含了基本的Python解释器和Conda环境,轻巧便捷,易于使用。Miniconda官方文档

    Anaconda则在Miniconda的基础上,附带了众多Python包和附加工具。Anaconda在科研界是备受欢迎的Python解决方案。Anoconda官网

    可根据自己的实际使用需求进行选择。

    使用conda env隔离不同工程

    养成良好习惯,Python工程一定要隔离环境!

    无论使用Python自带的venv,还是使用Conda env,隔离环境是十分必要的。

    • Python venv创建的虚拟环境,我们一般会手动指定其创建在对应工程内的 venv/ 中
    • Conda create创建的环境,会在conda安装目录下进行集中管理
    conda --help    #获取命令解释帮助

    conda管理包

    安装包:

    conda install package_name                #当前环境安装
    conda install -n env_name package_name    #指定环境安装

    卸载包:

    conda remove package_name                #卸载当前环境的包
    conda remove -n env_name package_name    #卸载指定环境的包

    注意: 如果是通过pip安装的包,移除时也请使用 pip uninstall package_name 命令移除,如果使用 conda remove 可能会发生异常,导致conda不可用。

    更新包:

    conda update package_name                #更新当前环境的包
    conda update -n env_name package_name    #更新指定环境的包

    更新conda:

    conda update conda

    列出已安装包:

    conda list              #查看当前环境已安装包
    conda list -n env_name  #查看指定环境内的包

    搜索包:

    conda search package_name    #搜索conda现有的源里面是否有该包

    conda管理环境

    创建conda环境:

    conda create -n $NAME_OF_ENV python=3.6 [package1 package2 ...]

    由于conda管理不同版本的Python,是把Python视为包进行管理的,所以这里指定Python版本,相当于指定了初始化conda环境的包

    查看 Conda 环境列表:

    conda env list    #显示所有环境的列表
    conda info -e
    conda info -envs

    激活 Conda 环境:

    conda activate $ENV_NAME

    退出当前环境:

    conda deactivate

    删除conda环境:

    conda env remove -n $ENV_NAME -all

    实用官方文档

    conda依赖包文件(yml/txt)

    导出当前已激活的环境配置:

    conda env export > environment.yml

    利用 environment.yml 创建环境:

    conda env create -f environment.yml

    对 environment.ym 文件修改后更新环境:

    conda env update -f environment.yml

    安装 pip freeze 创建的 requirements.txt :

    conda install --yes --file requirements.txt

    关于conda环境的可移植性

    实际上,在conda环境中,无论使用 conda env export 还是 pip freeze ,得到的依赖列表都是不可轻易移植的。

    conda安装包时,不仅会安装命令行指定的包,也会安装各种为了硬件加速、协同的依赖包(包括C++环境),这就导致了在conda环境中,靠自动生成的依赖文件并不可轻易移植环境。

    这既是conda的优势(解决了依赖问题,提升运行速度),也是conda的劣势(由于依赖于平台的非Python包牺牲了部分移植性)。

    conda清理

    Conda 的各项冗余缓存内容可以通过下述指令清理:

    conda clean <param>

    具体清理内容可以通过 -h 参数进行查看,例如:

    conda clean -p        #删除没有用的包
    conda clean -t        #删除tar包
    conda clean -y --all  #删除所有的安装包及cache

    关于源

    显示现有安装源

    conda config --show channels
    channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
      - https://mirrors.cloud.tencent.com/anaconda/pkgs/free/
      - https://mirrors.cloud.tencent.com/anaconda/pkgs/main/
      - https://mirrors.cloud.tencent.com/anaconda/cloud/conda-forge/
      - https://mirrors.cloud.tencent.com/anaconda/cloud/pytorch/
      - https://mirrors.cloud.tencent.com/anaconda/pkgs/pro/

    添加源

    conda config --add channels https://mirrors.cloud.tencent.com/anaconda/pkgs/pro/

    移除源

    conda config --remove channels https://mirrors.cloud.tencent.com/anaconda/pkgs/pro/

    使用建议

    不要混用 pip 和 conda

    conda和pip、virtualenv都是很好的工具,它们为不同的目的而存在,如何使用可根据个人喜好和需求而来。

    但pip和conda解决包间依赖问题以及包安装的方式差异很大,混用两者可能会导致各种问题。请不要混用两者:

    • 要么持续使用pip、virtualenv
    • 要么持续使用conda

    使用 venv 和 pip 创建开发(编程)环境

    大部分(几乎全部)的Python包均有跨平台的特性,所以在编程时,使用Python自带的venv和pip可以较为轻松获取到工程所需的依赖包列表。

    作者的相关博客链接:

    使用 Conda 部署生产(运行)环境

    conda安装Python包时,会附带安装各种用于硬件加速、协同的依赖包,在代码运行上更为快速、友好。使用开发时得到的 requirements.txt 创建conda环境即可(见2.3)。

    (整理自网络)

    参考资料:

    https://blog.csdn.net/sigmarising/article/details/88774548

    https://blog.csdn.net/sigmarising/article/details/89446397

    Min是清明的茗
  • 相关阅读:
    vim 学习笔记系列(前言)
    12306网站推出图片验证 反破解
    如何提升电脑的速度(五年时间收集各家精华,绝对史上最全)
    电脑维修和维护 毕业总结及经验报告
    留学生 电脑安全与维护手册 (留学须知)
    Progress数据库配置与应用
    润乾报表与DERBY数据库的创建连接详解
    图形报表部署在Linux下出现乱码解决办法
    sqlserver为数据库表增加自增字段
    五种常用web服务器jvm参数设置
  • 原文地址:https://www.cnblogs.com/MinPage/p/14141661.html
Copyright © 2011-2022 走看看