您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

conda:一个当下最流行的Python虚拟环境工具

时间:2020-01-14 10:14:43  来源:  作者:

在实际中,更为流行的是用Conda来管理Python环境。今天这篇文章就为大家介绍这方面的相关内容。

Conda环境

Conda简介

Conda是目前为止,最流行的Python软件包与管理环境。Conda分为 miniconda 与 anaconda两种。前者从名字上就能猜出是精简版,后者预装了很多常用的功能,但比较臃肿。实际工程中,一般都使用 miniconda,按需安装软件包,本文的下面篇幅也以 miniconda 为例进行说明。

Conda安装

首先利用wget下载安装脚本文件:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-linux-x86_64.sh

如果速度较慢,可以换用axel或aria2c下载

利用chmod命令修改sh文件为可执行文件,然后运行安装脚本:

chmod 755 Miniconda3-latest-Linux-x86_64.sh
bash ./Miniconda3-latest-Linux-x86_64.sh

在出现的提示界面中,根据提示选择yes或no。一般来说,我们保持默认即可,但需要留意下最后一步会自动在.bashrc文件添加conda的PATH路径。如果conda的环境存在与你日常使用的程序有冲突的命令,就有可能会出现问题。

当然,还有一种方式是在添加PATH路径时选择no,然后在每次需要conda的时候手动找到conda下的active命令激活下。这种方式比较灵活,如果不嫌麻烦建议使用这种方式。

注意不要把激活conda与激活虚拟环境搞混。

Conda常用命令

在conda环境中,常用的命令格式为:

conda [命令 [参数]] 

包管理

与python -m pip list类似,conda可以列出当前环境下的所有包:

conda list

版本与升级

conda有一套特别的机制,用于管理和维护依赖库之间的关系。在不同版本的conda中,我们可以直接使用的Python与依赖库的版本都不同,为了确定当前使用的conda版本,可以运行以下命令:

conda --version

有时,我们想用的某个库在conda中有问题,或者默认模块安装的版本比较旧,可以先尝试升级解决:

conda update conda

环境管理

conda环境中的虚拟环境比起原生Python更为强大,可以指定Python的版本,并自动安装相关的C++依赖库(windows下自动下载相关的c++ runtime)。

  • 建立

建立虚拟环境命令:

conda create -n env_demo 

如果要指定python版本,同时指定虚拟环境生成的路径,可以这样:

conda create python=3.6 -p /tmp/test

这样,Conda就为你生成了一个在/tmp/下叫test的虚拟环境,并且环境里的python版本是3.6。

conda create默认并不会把基础环境的依赖复制给新建的虚拟环境。如果要实现类似的依赖复制,需要加参数--clone,例如conda create -n test3 --clone base

我们也看一下这个路径下的内容:

ls /tmp/test
bin conda-meta include lib share ssl

在bin目录中,就存在python等常用的可执行命令:

2to3 idle3 pydoc3 python3.6-config pyvenv-3.6 wish8.5
2to3-3.6 idle3.6 pydoc3.6 python3.6m sqlite3 xz
c_rehash openssl python python3.6m-config tclsh8.5
easy_install pip python3 python3-config unxz
easy_install-3.6 pydoc python3.6 pyvenv wheel

因为这里是虚拟环境的bin目录,所以没有conda、activate等命令。这些命令都在当前conda默认的bin目录中。

  • 激活

激活一个虚拟环境,就需要用bin下的activate:

conda activate /tmp/test

其中,/tmp/test是虚拟环境的路径,可以从conda list中查看。

激活后,可以用which python确认是否成功。如果成功,当前python应该指向的是/tmp/test/bin/python

  • 安装依赖

激活一个Conda的虚拟环境后,安装依赖主要用以下命令:

conda install xxx

这条命令主要从默认的频道中去寻找xxx软件包。比如,我们可以用conda install pandas来安装pandas软件包。要注意,Conda里有频道的概念,类似电视机买回来一般都有个默认频道一样,默认的Conda有一个defaults的频道。如果我们需要更多的下载源,就需要和加入Ubuntu软件源类似,加入Conda频道:

conda config --add channels conda-forge

如果大家还记得上次文章,里面给大家介绍了Python的pip安装时怎么配置镜像地址来加速国内下载速度。同样的操作在Conda里面,则是通过配置频道来实现。比如,我们添加清华的Conda镜像:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

配置完成后,可以通过下面命令来确认是否配置成功:

conda config --show

当然,更直接的是直接下载一个依赖库,看实际下载速度怎么样。另外,也可以在conda install的同时,显式的指定频道:

conda install --prefix=/tmp/miniconda3/pyenv/py36 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ pytorch torchvision cuda91 -c pytorch

Conda不仅仅可以用conda install安装软件,同时也可以继续用pip,就和普通Python环境下操作没太有什么区别:

python -m pip install xxx

并不是所有的软件都可以用pip安装。最佳实践是只在conda找不到包时,才用pip安装。不要使用user参数,避免权限问题。

  • 退出

直接运行conda deactivate,然后可以通过which python来确认。

Conda环境导出与恢复

Conda支持直接导出环境,命令如下:

conda env export > env.yml

这里,推荐在熟悉的情况下,去掉二级依赖库(依赖的依赖)。一方面减少文件内容,第二有可能二级依赖在后面会被取消。

环境恢复使用命令:

conda env create -n revtest -f=/tmp/env.yml

这里比较关键是导出的yaml文件,通过编译器查看可知,其是一个标准的yaml文件。里面主要包括:

name: 环境名字
channels:
 - 频道urls
 ……
dependencies:
 - 软件名=版本号=编译环境
prefix:环境路径
  • Conda环境包含pip依赖

私信小编01 领取完整项目!上面的环境依赖都是conda自己就可以安装,如果所需要的依赖正好没有conda资源怎么办?其实,conda早就可以直接在环境里使用pip依赖:

name: hyperparam_example
channels:
 - defaults
dependencies:
 - python=3.6
 - numpy=1.14.3
 - pandas=0.22.0
 - scikit-learn=0.19.1
 - matplotlib=2.2.2
 - tensorflow-mkl==1.13.1
 - keras==2.2.2
 - pip:
 - mlflow>=1.0
 - Gpy==1.9.2
 - GpyOpt==1.2.5
 - pyDOE==0.3.8
 - hyperopt==0.1

这个环境文件参考自mlflow项目(https://github.com/mlflow/mlflow/blob/master/examples/hyperparam/conda.yaml),从这里我们就可以看到两点:

  • 利用conda就可以同时管理好conda和pip依赖
  • conda 的环境管理,已经成为一种标准,被mlflow这样的项目所使用。

那么最后一个问题,conda和pip到底有什么不同?

  • conda还负责依赖检查和维护。Conda不仅仅安装Python库这么简单,他还能把Python库需要的外部依赖也同时安装进来,并且维护每个软件库对应的各种依赖版本关系,每次conda安装都要进行比较复杂的处理来维护好依赖关系。
  • conda这个包管理命令不仅仅可以用在Python上,还可以用来管理R等其他语言。
  • 不能提供egg或whl时,pip只能从源代码编译。而conda install一直都是安装编译好的二进制。
  • conda默认就支持虚拟环境;而pip是靠virtualenv或venv来支持
  • conda是Python的外部工具
  • conda的托管网站是Anaconda,而pip的托管网站是PyPI(https://pypi.org/)


Tags:conda   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、什么是Anaconda?为何要安装Anaconda?Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项.。那为何要安装Anaconda呢?因为方便呀,Ana...【详细内容】
2021-08-19  Tags: conda  点击:(94)  评论:(0)  加入收藏
Python作为深度学习和人工智能学习的热门语言,学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用。下面来介绍运行Python代码常用到...【详细内容】
2020-06-14  Tags: conda  点击:(46)  评论:(0)  加入收藏
在实际中,更为流行的是用Conda来管理Python环境。今天这篇文章就为大家介绍这方面的相关内容。Conda环境Conda简介Conda是目前为止,最流行的Python软件包与管理环境。Conda分...【详细内容】
2020-01-14  Tags: conda  点击:(92)  评论:(0)  加入收藏
1. Anaconda+PyCharmAnaconda是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,装上Anaconda,就相当于把Python和一些如Numpy、Pandas、Scrip、M...【详细内容】
2019-06-18  Tags: conda  点击:(2985)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(9)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条