为了解决python多版本共存,解决不同版本之间的依赖冲突,虚拟环境隔离等问题,我们前面介绍了venv、virtualenv、virtualenvwrapper、pyenv、pipenv等众多工具。下面我们再介绍一个非常强大的多环境管理神器——Anaconda。

Anaconda (强大)

1、什么是Anaconda

Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。Anaconda通过管理工具包、开发环境、Python版本,大大简化了你的工作流程。不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目。安装Acaconda默认的Python是2.7;安装Acaconda3默认的Python是3.6

2、什么是Conda

Conda是一个开源的包、虚拟环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换,它的包管理类似PIP。

packages 管理: 可以使用 conda 来安装、更新 、卸载工具包 ,并且它更关注于数据科学相关的工具包。在安装 anaconda 时就预先集成了像 Numpy、Scipy、 pandas、Scikit-learn 这些在数据分析中常用的包。另外值得一提的是,conda 并不仅仅管理Python的工具包,它也能安装非python的包。比如在新版的 Anaconda 中就可以安装R语言的集成开发环境 Rstudio。

虚拟环境管理: 在conda中可以建立多个虚拟环境,用于隔离不同项目所需的不同版本的工具包,以防止版本上的冲突。对纠结于 Python 版本的同学们,我们也可以建立 Python2 和 Python3 两个环境,来分别运行不同版本的 Python 代码。

3、安装Anaconda:

去官网下载指定的版本的Anaconda:https://repo.anaconda.com/archive/

我们下载的是Anaconda3-5.2.0-Linux-x86_64.sh

wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh

安装前,先安装bunzip2依赖包,否则后面安装会报错:bunzip2: command not found

yum install -y bzip2

运行该脚本,进行安装

bash Anaconda3-5.2.0-Linux-x86_64.sh

在安装的过程中,会问你安装路径,直接回车默认就可以了,默认安装到了/root/anaconda3目录下。

有个地方问你是否将anaconda安装路径加入到环境变量(.bashrc)中,输入yes,默认的是no,

最后一步有一个询问你是否安装vscode,emm如果你没有需要就输入no,毕竟在服务器里面都是用vim编辑器的,没必要多装一个。

安装完成如下图:

配置anaconda环境变量:

默认是安装在/root/anaconda3/下的,如果不是,请修改路径

vim /etc/profile

## Anaconda
export PATH=$PATH:/root/anaconda3/bin

加载使立即生效

source /etc/profile

注意:如果之前服务器上已经编译安装过python了,将它重命名,否则系统会自动找到之前编译的python3环境,而不会使用Anaconda里的python环境。

# 注释掉之前编译安装使用的python3.9环境
mv /usr/local/python3.9/ /usr/local/python3.9_bak

测试Anaconda安装是否正确:

# 查看python3的路径是否正确
which python3
# 启动python3看环境是否正确
python3

如下图:

至此,Anaconda安装完成。

Conda自身管理

更新conda

# 更新anaconda
conda update conda

更新anaconda元数据包

# 更新anaconda元数据包
conda update anaconda

.condarc

删除 .condarc 文件这个文件默认没有,只有你执行过 conda config 命令以后才会自动建立。该文件是conda的配置文件

是YAML格式。比如你可以设置安装包的渠道,是否自动更新conda,是否允许其他渠道等设置。

4、Python环境管理

# 创建一个新环境,并制定python解释器版本,没有会自动下载
# python27 是环境名称
# python=2.7 是要安装的包和版本,默认会为我们寻找2.7.x中的最新版本
# anaconda 是创建环境时同时要安装的包,这个可以不写
conda create -n python27 python=2.7 anaconda
conda create -n python36 python=3.6
conda create -n python37 python=3.7 # 更新Python,进入某个环境运行下面的命令,将更新当前环境的Python到最新分支版本。比如当前是3.5,更新后将会到最新的3.X
conda update python

5、虚拟环境管理

查看当前托管的所有虚拟环境列表

[root@linux121 ~]# conda env list
# conda environments:
#
base * /root/anaconda3

创建虚拟环境

 # 创建一个名为myvenv 的环境,指定Python版本是3.10
# (不用管是3.10.x,conda会为我们自动寻找3.10.x中的最新版本)
conda create --name myvenv python=3.10

虚拟环境不会在当前环境下创建虚拟环境目录,所有的虚拟环境目录默认放在:

/root/anaconda3/envs/

激活虚拟环境

activate myvenv        # for Windows
source activate myvenv # for Linux & Mac
conda activate myvenv # 新版使用这个

退出虚拟环境

 conda deactivate

如下图:

导出依赖包:

导出环境,它会把当前环境中安装的包以及版本号都导出去,这样你就可以拿到另外的机器上来重新构建一个相同的环境

导出的内容包括环境名称,安装渠道,该环境安装的包以及版本号。

# 首先进入名称叫做python36环境
conda activate myvenv
# 导出当前环境到指定文件
conda env export > environment.yml
# 通过环境文件建立环境,不需要指定环境名称,因为文件中包含名称字段
conda env create -f environment.yml

删除虚拟环境

# 方式一:
conda env remove --name myvenv
# 方式二:
conda remove -n myvenv --all

克隆虚拟环境:

conda create -n myvenv2 --clone myvenv

克隆如下图:

6、包管理

安装包

conda install --name myvenv scipy # 安装包到指定环境中
conda install scipy # 安装包到当前环境中
conda install scipy=0.15.0 # 安装指定版本的包,到当前环境
conda install scipy curl # 安装多个包
conda install -c anaconda django # -c是指定渠道名称,也就是用哪个渠道安装django。

卸载包:

# 卸载包
conda remove 包名 # 删除当前环境中的指定包
conda remove -n myvenv numpy # 删除指定环境中的指定包
conda remove -n myvenv --all # 删除指定环境中的所有包,等同于删除环境

更新包:

conda update 包名  # 更新当前环境指定的包
conda update -n myvenv numpy # 更新指定环境中的指定包

查看当前packages:

# 查看当前已经安装的packages
conda list
conda list -n myvenv # 查看指定环境中安装的所有包

如下图:

查找可安装的包:

精确查找

conda search --full-name <package_full_name>
# 例如:
conda search --full-name python

模糊查找:

conda search jieba
# 支持正则
conda search *py*

7、镜像源管理

conda默认使用的是官方镜像源,是在国外,安装下载会很慢,所以强烈建议切换为国内镜像源。

查看当前镜像源配置

# 查看当前的镜像源
conda config --show channels
# 查看详细信息
conda config --show

如下图:default的地址默认就是官方地址,https://repo.anaconda.com/pkgs/main

添加清华大学镜像源

# 添加Anaconda的TUNA镜像
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 --set show_channel_urls yes

再次查看镜像地址:

conda config --show channels

如下图;

添加第三方镜像源:

##  Conda Forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
## msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
## bioconda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
## menpo
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
## pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

其他镜像源:

清华大学其他镜像源地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/

删除镜像源

conda config --remove channels <URL>  ## 删除原来的旧镜像

# 如下
conda config --remove channels default
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

注意:如果切换镜像源后,安装过程出现报错:

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/noarch/repodata.json>

解决办法:参考:https://www.freesion.com/article/67891423758/

1、首先把镜像源地址,从https替换为http

2、删除/root/.condarc中的- default

即可解决

.condarc文件说明:

文件这个文件默认没有,只有你执行过 conda config 命令以后才会自动建立。该文件是conda的配置文件,是YAML格式。比如你可以设置安装包的渠道,是否自动更新conda,是否允许其他渠道等设置。下面是我的配置文件说明。这些不是必须的。但是在国内建议设置channels,这个在上面已经说过。所以通常你不需要关注这个文件。

参考:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/

文件样例如下:

vim /root/.condarc

channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

清除索引缓存:

运行 conda clean -i 清除索引缓存,保证用的是镜像站提供的索引。

conda clean -i

8、当conda中没有这个包时:

会报错,如下:

PackagesNotFoundError: The following packages are not available from current channels:

方法一:使用pip安装

# 安装不在conda或者acaconda的包,当你安装的包不在conda管理范围的时候可以使用pip来安装
conda install pip # 首先在当前环境中安装pip
pip install jieba # 其次在通过PIP命令在当前环境中安装包

方法二:搜索包含该安装包的渠道

anaconda search  jieba

搜索如下图:

选择其中一个版本,我们选择了conda-forge/jieba模块

展示该版本的信息

anaconda show conda‐forge/jieba

如下图,显示了安装渠道路径

找到对应的渠道信息,如上面最后一行,直接进行安装即可

conda install --channel https://conda.anaconda.org/conda-forge jieba

如果最开始你就知道要这个渠道模块,也可以这样直接安装:

conda install -c conda-forge jieba

方法三:去conda官网搜索包

说明:对于那些无法通过conda安装或者从Anaconda.org获得的包,我们通常可以用pip来安装包。

pip只是一个包管理器,所以它不能为你管理环境。pip甚至不能升级python,因为它不像conda一样把python当做包来处理。但是它可以安装一些conda安装不了的包,pip和conda都集成在Anaconda或miniconda里边。

另外你还可以去 官网 搜索:https://anaconda.org/

如下,找到很多渠道:

找到安装路径:

再使用该安装路径安装即可:

conda install -c conda-forge jieba

方法四:去pypi下载安装包,手动安装

如果下载太慢,可以去官网下载,下载jieba的安装包,然后解压到pkgs目录上,参考链接:https://www.pianshen.com/article/18251601207/

官网链接:https://pypi.org/project/jieba/#files

解压之后,执行包里的setup.py文件也可以安装成功。

wget https://files.pythonhosted.org/packages/c6/cb/18eeb235f833b726522d7ebed54f2278ce28ba9438e3135ab0278d9792a2/jieba-0.42.1.tar.gz
tar xf jieba-0.42.1.tar.gz
mv jieba-0.42.1 /root/anaconda3/pkgs/
cd /root/anaconda3/pkgs/jieba-0.42.1/
# 如果要安装到指定虚拟环境中,需要先激活环境,再执行install
source activate job_recommended
python setup.py install

如果安装的时候,没有进入虚拟环境,可以在安装后,重新激活虚拟环境,再安装一次,安装到虚拟环境中,如下,

9、Miniconda

Miniconda 是一个 Anaconda 的轻量级替代,默认只包含了 python 和 conda,但是可以通过 pip 和 conda 来安装所需要的包。

Miniconda相比Anaconda,去掉了科学计算的相关包,更加轻量级,没有那么臃肿。可以认为是Anaconda的最小化版本,用法与Anaconda完全一致。

Miniconda 安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 下载。

10、图形界面管理

Anaconda还提供了UI界面,进行图形化管理。

比如在windows中,安装完成后,点击Anaconda Navigator

如图所示:首页显示的是一些自带的工具

点击Environments,可以在这里进行环境管理的操作。

包括:创建虚拟环境,导入虚拟环境,进入虚拟环境,以及查看安装包

创建虚拟环境myvenv

搜索包安装:

点击channels可以添加渠道

11、Jupyter Notebook

Anaconda自带了Jupyter Notebook,我们可以直接启动Jupyter Notebook。

window启动:

Linux启动:

如果没有安装Anaconda,就需要手动安装一下jupyter notebook

pip install jupyter notebook

因为Anaconda自带了jupyter,所以直接启动:

jupyter notebook --allow-root

注意,默认是不允许外部访问的,需要配置一下远程访问支持:

生成jupyter配置文件

#root用户:
jupyter notebook --generate-config --allow-root
#非root用户
jupyter notebook --generate-config

如下图:

修改配置

vim /root/.jupyter/jupyter_notebook_config.py

增加以下两行:

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False

配置密码:

jupyter notebook password

这里密码输入123456

启动jupyter notebook:

jupyter notebook --allow-root

如下图所示:

也可以后台启动:

nohup jupyter notebook --allow-root > jupyter.log 2>&1 &

打开网页访问:默认8888端口

输入地址:(配置好hosts映射)http://linux121:8888/

输入密码123456

登录如下图:

里面的文件,就是我们之前启动jupyter notebook的当前目录下的内容

新建一个文件:

输入python代码,点击run运行如下:

import time, sys
for i in range(8):
print(i)
time.sleep(0.5)

如下图所示:

更多jupyter notebook,参考:https://jupyter-notebook.readthedocs.io/en/latest/

12、优缺点分析:

1、功能强大,而且还有UI界面。

2、支持python2、python3以及windows、linux、mac等多平台。

3、conda安装可以自动解决依赖关系,之前的pip可能不会安装所有依赖包,导致出现依赖问题。

4、Anaconda,显得有点厚重,臃肿,但是可以用轻量级的miniconda替换。

5、conda安装软件需要解析依赖关系,而且默认连的国外的镜像源,所以conda安装可能很慢。

6、包含大量的科学计算的包,适合做数据分析或者喜欢UI界面的人。

参考引用:

https://www.cnblogs.com/rexcheny/p/9484309.html

https://zhuanlan.zhihu.com/p/106588887

Python多环境管理神器(Anaconda)的更多相关文章

  1. Python多环境管理神器(pyenv)

    前面我们已经介绍了,python中两种最基础的虚拟环境管理工具,venv和virtualenv,其中virtualenv可以和virtualenvwrapper配合使用.详情请参考:https://w ...

  2. Python多环境管理神器(pipenv)

    pipenv 参考官网:https://pipenv.pypa.io/ pipenv 是一款比较新的包管理工具,其借鉴了 javascript 的 npm 和 PHP 的 composer 等理念,通 ...

  3. 001-mac搭建Python开发环境、Anaconda、zsh兼容

    一.概述 mac下搭建python环境推荐使用Anaconda+Pycharm. 1.1.Anaconda Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学.机器 ...

  4. 学习python你必须弄懂的 Python、Pycharm、Anaconda 三者之间的关系

    Python作为深度学习和人工智能学习的热门语言,学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用.下面来介绍运行Python代码常用到的工具总结. 一.Py ...

  5. 【Machine Learning】Python开发工具:Anaconda+Sublime

    Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...

  6. 优雅的使用python之环境管理

    优雅的使用python之环境管理 缘起 情景1:不同python版本的管理 同一电脑上的多个python版本之前的管理,为了突出问题的普遍存在,下面是有人在segmentfault上提的问题. 摘自: ...

  7. Python,Pycharm,Anaconda等的关系与安装过程~为初学者跳过各种坑

    1.致欢迎词 我将详讲讲述在学Python初期的各种手忙脚乱的问题的解决,通过这些步骤的操作,让你的注意力集中在Python的语法上以及后面利用Python所解决的项目问题上.而我自己作为小白,很不幸 ...

  8. Windows下Python 3.6 + VS2017 + Anaconda 解决Unable to find vcvarsall.bat问题

    Python 3.6 + VS2017 + Anaconda 解决Unable to find vcvarsall.bat问题 已经安装了VS2017,需要将项目中的C代码翻译为Python代码,在编 ...

  9. python神器——Anaconda的安装与优化配置

    python 对于初学者来说,原版的python在使用的时候非常麻烦,特别是在添加库.升级库的时候总是会报好多错误,缺这缺那.但是自从有了Anaconda以后,妈妈再也不用担心我用不了python啦! ...

随机推荐

  1. RocketMQ源码详解 | Broker篇 · 其五:高可用之主从架构

    概述 对于一个消息中间件来讲,高可用功能是极其重要的,RocketMQ 当然也具有其对应的高可用方案. 在 RocketMQ 中,有主从架构和 Dledger 两种高可用方案: 第一种通过主 Brok ...

  2. curl -w参数简析

    curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出. 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{variable_name}的格式,如果需要输出%,doub ...

  3. jquery Ajax 不执行回调函数success的原因

    jquery Ajax 不执行回调函数success的原因: $.ajax({ type: "post", contentType: "application/json& ...

  4. 【LeetCode】1134. Armstrong Number 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 直接计算 日期 题目地址:https://leetco ...

  5. 【LeetCode】1128. Number of Equivalent Domino Pairs 等价多米诺骨牌对的数量(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计 代码 复杂度分析 日期 题目地址:http ...

  6. 【LeetCode】1005. Maximize Sum Of Array After K Negations 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 日期 题目地址:https://leetco ...

  7. 【LeetCode】885. Spiral Matrix III 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  8. idea使用教程-idea简介

    集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集成了代码编写功 ...

  9. 主流的 API 架构

    1. RPC:调用另一个系统的函数 2. SOAP:使数据作为服务可用 3. REST:使数据作为资源可用 4. GraphQL:仅请求所需要的数据 1. RPC:调用另一个系统的函数 远程过程调用是 ...

  10. 【Java例题】5.2 数组转换

    2. 有一个一维数组由键盘输入,据输入的m和n,将其转换为m*n的二维数组. package chapter5; import java.util.Scanner; public class demo ...