一、概述
1.Python介绍
Python是一种面向对象的解释型计算机程序设计语言,可以在Linux、macOS、以及Windows系统中搭配环境并使用,其编写的代码在不同平台运行时,几乎不需要做较大改动。
此外,Python强大之处在于它的应用领域范围遍及人工智能、科学计算、Web开发、系统运维、大数据及云计算、金融、游戏开发等,实现其强大功能的前提,就是Python具有数量庞大且功能相对完善的第三方库。通过对库的引用,能够实现对不同领域业务的开发。然而,由于库的数量庞大,这些库的管理和维护是重要且复杂的事情。
2.Python环境组成
Python环境主要由解释器和包集合组成。
我们直接安装一个任意版本的Python,打开安装位置的目录,发现如下图所示。
(1)Python解释器
Python解释器是Python环境的本体,也就是python.exe文件。我们需要在环境变量的路径中将python.exe所在的目录添加上,这样在终端或者命令行中输入python指令时,就会默认打开该目录下的python.exe文件。
解释器根据python的版本分为2和3,python2和python3之间无法相互兼容,也就是说用python2写出的脚本在python3的解释器中不一定能够运行。我们正常装一个Python,那个版本就已经固定了,如果同时需要2和3,则需要同时装两个python。
(2)Python包集合
Python包集合相当于Python的扩展功能,它在Lib文件夹内,包括自带的包和第三方包。其中第三方包可以用pip或者easy_install下载,下载后的包放在Lib文件夹的site-packages下。
当一个python环境中不包含这个包,那么引用了这个包的程序是不能在该环境下运行的。报错方式通常是你在import某个模块的时候提示找不到。
3.上述配置Python环境问题所在
(1)Python解释器版本固定
python2和python3在语法上不兼容,我们装一个python后,版本已经固定。如果我们一直使用的是python3,忽然有个程序必须要在python2环境下运行,那我们就不得不下载一个python2。
而我们就算不需要使用python2,那么python3.7和python3.6支持的同一个包的版本肯定也还是有差别的,我们可能装好了python3.7,但是又有个程序包含的包的版本又只支持低版本的python3,那么我们又得去python官网上找到这个版本的python下载安装,可以说是非常麻烦了。
退一万步说,我们非常有耐心,电脑上装了四五个python版本,但是我们每次运行某个程序的时候都需要检查这个程序对应的python版本,并且切换python版本我们可能只能通过改变环境变量路径的方式。
(2)包的管理
当我们将写好的程序放到另一台电脑上运行时会遇到缺少相关包的状况,这时候需要手动一个个下载包。同时,我们还需要在原电脑上查找原来包的版本。比如从tensorflow1到tensorflow2,它的变动是非常大的。有些程序,我们直接下载默认包的最新版本肯定是行不通的。
(3)环境混乱
我在本地只有一个python环境,那么所有程序用到的包都只能放在同一个环境中,这是非常混乱的。也许会存在两个程序用到的同一个包的版本不一样,这样我们运行完一个程序再运行另一个程序时,就要先卸载这个包再装上这个包的另一个版本。
我们需要做的是能为每一个python程序都配置一个独立的环境,这样每个程序都能在它特定的环境下运行,也不会存在不同程序的包之间互相冲突的情况,因为它们运行的环境互不干扰。当程序开发完以后,我们可以将该程序需要的环境(第三方包)独立打包出来。
以上这些问题,Anaconda全部都能解决。
二、Anaconda介绍
1.简介
Anaconda是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、numpy、matplotlib在内的超过180个科学包及其依赖项。
2.特点
Anaconda具有开源、安装过程简单、高性能使用Python语言和免费社区支持的特点,主要基于它拥有conda包、环境管理器和1000+开源库。我们也可以安装简洁版的Miniconda。
3.conda包介绍
(1)适用语言
Python、R、Ruby、Lua、Scala、Java、Javascript、C、C++、FORTRAN
(2)适用平台
Windows、macOS、Linux(x86/Power8)
(3)用途
①快速安装、运行和升级包及其依赖项。
②在计算机中便捷地创建、保存、加载和切换环境。
三、Anaconda安装
这里强调一下,我们安装完Anaconda以后就不要安装python了,因为Anaconda本身是包含python编辑器以及一些最常用的包的。Anaconda2对应的是python2版本,Anaconda3对应的是python3版本。我们只需要去Anaconda官网(http://www.anaconda.com/products/individual)找到你的操作系统对应的安装包就可以了。
具体安装过程大家可以参考这篇博客。
https://www.jianshu.com/p/62f155eb6ac5
当然,上面说的Anaconda对应的Python版本只是默认主环境的版本,并不是说你只能使用python3.8的解释器。如果你想用别的版本的解释器,完全可以创建一个独立的环境并指定使用该版本,中间也不要你重新下载另一个版本的Anaconda。这部分操作我将在后面说明。
说明:接下来的都是以命令行模式进行操作。macOS和Linux用户打开“Terminal”(“终端”)(Crl+Alt+T)。Windows用户打开“Anaconda Prompt”或者将Anaconda相关目录配置到系统环境变量路径中去。
需要注意的是,如果你又装了Anaconda又装了Python,需要确保Anaconda的环境变量路径要在Python之前,即Anaconda的优先级更高一点。
四、conda基本操作
1.查看conda版本
conda --version
conda -V
例如:
终端上以conda版本号的形式显示当前安装conda的版本号。这条命令也可以用来验证conda是否被成功安装。
2.更新conda至最新版本
conda update conda
conda update anaconda
conda upgrade conda
conda upgrade anaconda
升级Anaconda需要先升级conda,执行命令后,conda会对版本进行比较并且列出可以升级的版本。同时,也会告知用户相关包也会升级到相应版本。当有新的版本用于升级时,终端会显示Proceed([y]/n)?,输入y即可升级。
3.查看conda帮助信息
conda --help
conda -h
有一些命令,这里没有提及,你们也可以去了解一下。
查看某一命令的帮助,可以使用
conda create --help
conda update --help
4.卸载Anaconda
Linux或macOs:
rm -rf ~/anaconda2
rm -rf ~/anaconda3
Windows:
控制面板->程序和功能->卸载Anaconda
Linux或macOs删除Anaconda安装目录(选择对应的2或3版本),最后建议清理一下.bashrc中的Anaconda路径。
五、管理环境
Anaconda是可以在一个主环境(base)的基础上创建多个单独的python环境的,并且能够对环境进行管理。每个独立的环境都可以指定需要的解释器版本以及安装对应版本的第三方包。
1.创建新环境
conda create --name <env_name> <packages_name>
conda create --N <env_name> <packages_name>
<env_name>是创建的环境名。<package_names>是安装在该环境中的包名。
安装指定解释器的版本号
conda create --name SVM python=3.5
这表示创建一个名为“SVM”的环境,环境中安装版本为3.5的python解释器。
在新创建的环境中创建多个包
conda create --name SVM python=3.6 numpy pandas matplotlib
这表示创建一个名为“SVM”的环境,环境中安装版本为3.5的python解释器,同时安装了numpy、pandas和matplotlib。
如果创建环境没有指定python解释器版本,那么会默认安装与Anaconda版本默认对应的python版本(base主环境的解释器版本)。新创建的环境会被保存在anaconda3/env目录下。
例如:
如图所示,它会提示相关信息,并完成环境的创建。
2.显示已创建环境
conda env list
conda info -e
conda info --envs
这会显示出你已经创建的python环境,“*”所在行表示当前所在环境,base是默认的主环境。如图所示,它显示了刚刚创建的环境“SVM”。
3.激活/切换环境
Linux或macOS:
source activate <env_name>
conda activate <env_name>
windows:
activate <env_name>
成功切换环境后,该行行首会以“(env_name)”或“[env_name]”开头。
这就从base环境切换到了SVM环境。
如果想直接切换到base环境,那么<env_name>为空即可。
4.退出环境至root
Linux或macOS:
source deactivate
conda deactivate
windows:
deactivate <env_name>
执行会退出当前环境至root。再执行activate会重新激活环境。
回到root环境变量后,原本行首以“(env_name)”或“[env_name]”开头的字符会不再显示。
5.复制环境
conda create --name <new_env_name> --clone <copied_env_name>
<copied_env_name>为被复制的环境名,<new_env_name>为复制之后的新环境名。
例如:
这里我们复制“SVM”的环境给一个新环境“mach”,复制完之后,我们查看已创建环境,发现同时存在“SVM”和“mach”环境,且两个环境配置相同。
6.删除环境
conda remove --name <env_name> --all
<env_name>为被删除环境的名称。
例如:
可以发现我们成功删除了“SVM”环境。
值得说一下的是,我们如果想对一个环境重命名,可以先将该环境复制给另一个环境,再删除该环境。结合复制环境和删除环境的操作,我们实现了将“SVM”环境重命名“mach”。
六、管理包
1.查找包
精确查找:
conda search --full-name <package_full_name>
模糊查找:
conda search <text>
pip查找:
pip search <text>
–full-name为精确查找的参数,<package_full_name>为被查找包的全名。
例如查找包tensorflow-gpu的过程:
2.查看包信息
ananconda show <package_name>
pip show <package_name>
<package_name>为查看的包信息。
3.获取环境中已安装的包信息
查看当前环境中已安装的包信息:
conda list
查看指定环境中已安装的包信息:
conda list --name <env_name>
pip查看当前环境中已安装的包信息:
pip list
pip freeze
pip查看当前环境中可升级的包信息:
pip list -o
<env_name>为指定环境名。
例如查看mach环境中已安装的包信息:
conda会显示安装包版本以及其依赖项,而pip不会显示依赖项。
4.安装包
(1)conda安装包
在当前环境中安装包:
conda install <package_name>
在指定环境中安装包:
conda install --name <env_name> <package_name>
安装特定版本的包:
conda install <package_name>=version
<env_name>为指定环境名,<package_name>为安装包名,version为安装包的版本号。
例如:
因为我们mach环境里python是3.5版本的,我们想要安装numpy。我们去conda search numpy获取包信息如下:
可以发现支持python3.5的最新numpy版本就是1.15.2,这样我们可以输入如下命令进行安装。
安装完成后我们切入mach环境,打开解释器,import numpy没有报错说明就安装成功了。
(2)pip安装包
pip在当前环境中安装包:
pip install <package_name>
安装特定版本的包:
pip install <package_name>==version
当使用conda install无法进行安装时,可以使用pip进行安装。
pip指定特定版本是“==”,而conda是“=”。
pip只是包管理器,无法对包进行管理。因此如果想在指定环境中使用pip进行安装包,则需要先切换到指定环境中,再用pip命令安装。
pip无法更新python,因此pip不能讲python视为包。
pip可以安装一些conda无法安装的包,conda也可以安装一些pip无法安装的包。当使用一种命令无法安装时,可以尝试使用另一种命令。
pip安装包或许直接忽略依赖项而安装,仅在结果中提示错误,conda安装包自动安装其依赖项。
(3)从Anaconda.org安装包
搜索http://Anaconda.org,打开主页面后无需注册。
在“Anaconda Cloud”上方搜索栏中输入要安装的包名,点击右边“放大镜”搜索图标。
搜索结果有非常多的包可供选择,此时点击“Downloads”根据下载量排序,找到你想要安装的包,点击就会出现如下页面(这里我要下载tensorflow-gpu)。
它有好几种安装方法,你可以点击“Files”直接下载安装包,也可以点击“conda”复制“To install this package with conda run”下方的命令,并粘贴到终端中运行。
(4)本地文件安装
如果上面方法通通不管用,我们可以下载源码安装,我们可以下载安装包的exe文件或者whl文件。exe文件直接双击打开,whl文件在该文件的目录下使用如下命令:
pip install 目录/文件名(......whl)
5.卸载包
卸载当前环境中的包:
conda remove <package_name>
卸载指定环境中的包:
conda remove --name <env_name> <package_name>
pip卸载当前环境中的包:
pip uninstall <package_name>
<env_name>为指定环境名,<package_name>为安装包名。
6.更新包
更新所有包:
conda upgrade --all
conda update --all
更新指定包:
conda upgrade <package_neme>
conda update <package_neme>
pip更新包
pip install -U <package_neme>
pip更新自己
pip install -U pip
<package_neme>为更新的包名。
7.导入导出环境中的包
(1)conda导入导出包
导出:
conda env export > environment.yaml
conda list -e > requirements.txt
导入:
conda env create -f environment.yaml
conda install --yes --file requirements.txt
这可以复现安装环境。当然,移植过来的环境只是安装了原来环境里用conda install等命令直接安装的包,用pip之类装的包没有移植过来,需要重新安装。
例如:
这里我们将mach环境的包导出到environment.yaml中,再把该环境删除。我们发现桌面上多了environment.yaml文件,打开后发现里面存储了各个包的版本号及其依赖项。
我们再重新导入即可。
(2)pip导入导出包
导出:
pip freeze > requirements.txt
导入:
pip install -r requirements.txt
七、换源
我们有些时候会遇到下载安装包速度慢的问题,这时候就需要换源。
1.conda换源
(1)常用命令
查看channels:
conda config --show channels
vim ~/.condarc
添加国内镜像源:
conda config --add channels <镜像源地址>
conda config --set show_channel_urls yes
移除国内镜像源:
conda config --remove channels <镜像源地址>
conda自动开启/关闭激活base环境:
conda config --set auto_activate_base false
conda config --set auto_activate_base true
(2)可用的国内源
更换清华源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
更换中科大源:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
上述方法我们也可以用
vim ~/.condarc
编辑文本,文本中内容如下图所示
(3)换源操作
安装清华源操作如下图所示:
也可以用vim对condarc进行编辑,如下图所示,保存即可。有关vim的用法自行搜索。
我们试着来安装pandas,发现下载的源是来自清华源,证明换源成功。
2.pip换源
(1)国内常用源
pip国内的一些源:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(2)pip临时使用
临时指定pip路径,无需配置pip源。
pip install pythonModuleName -i <换源地址>
例如:
pip install numpy -i https://mirrors.aliyun.com/pypi/simple
(3)更改pip配置文件中的源(永久更改)
Linux或macOS:
#创建目录
mkdir -p ~/.pip
#修改配置文件
vim ~/.pip/pip.conf
#写入以下内容并保存
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
或者
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/
Windows:
直接在user目录中创建一个pip目录,如:C:\Users\xx\pip
新建文件pip.ini,内容如下
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
(4)使用pqi永久换源(各个操作系统通用,推荐)
安装pqi
pip install pqi
查看pqi帮助信息
pqi
列举所有支持的pip源
pqi ls
改变pip源(阿里云)
pqi use aliyun
显示当前pip源
pqi show
添加新的pip源(如添加ustc源)
pqi add ustc https://mirrors.ustc.edu.cn/pypi/web/simple
移除pip源(如官方PyPi源)
pqi remove pypi
下面是借助pqi从中科大pip镜像下载see包的例子。
参考:
https://www.jianshu.com/p/62f155eb6ac5
https://www.jianshu.com/p/eaee1fadc1e9