python环境及包管理
前⾔
python的发⾏版有WinPython, Anaconda等,这些发⾏版将python和许多常⽤的package打包,⽅便管理;此外,还有virtualenv, pyenv等⼯具管理虚拟环境。该⽂主要介绍Anaconda
Anaconda概述
这⾥先解释下conda、anaconda这些概念的差别。conda可以理解为⼀个⼯具,也是⼀个可执⾏命令,其核⼼功能是包管理与环境管理。包管理与pip的使⽤类似,环境管理则允许⽤户⽅便地安装不同版本的python并可以快速切换。Anaconda则是⼀个打包的集合,⾥⾯预装好了conda、某个版本的python、众多packages、科学计算⼯具等等,所以也称为Python的⼀种发⾏版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的⽤户,Miniconda是⼀种选择。
进⼊下⽂之前,说明⼀下conda的设计理念——conda将⼏乎所有的⼯具、第三⽅包都当做package对待,甚⾄包括python和conda⾃⾝!因此,conda打破了包管理与环境管理的约束,能⾮常⽅便地安装各种版本python、各种package并⽅便地切换。
Anaconda的安装
安装时,会发现有两个不同版本的Anaconda,分别对应Python 2.7和Python 3.5,两个版本其实除了这点区别外其他都⼀样。后⾯我们会看到,安装哪个版本并不本质,因为通过环境管理,我们可以很⽅便地切换运⾏时的Python版本。(由于我常⽤的Python是2.7和3.4,因此倾向于直接安装Python 2.7对应的Anaconda)
下载后直接按照说明安装即可。这⾥想提醒⼀点:尽量按照Anaconda默认的⾏为安装——不使⽤root权限,仅为个⼈安装,安装⽬录设置在个⼈主⽬录下(Windows就⽆所谓了)。这样的好处是,同⼀台机器上的不同⽤户完全可以安装、配置⾃⼰的Anaconda,不会互相影响。
对于Mac、Linux系统,Anaconda安装好后,实际上就是在主⽬录下多了个⽂件夹(~/anaconda)⽽已,Windows会写⼊注册表。安装时,安装程序会把bin⽬录加⼊PATH(Linux/Mac写⼊~/.bashrc,Windows添加到系统变量PATH),这些操作也完全可以⾃⼰完成。以Linux/Mac为例,安装完成后设置PATH的操作是
# 将anaconda的bin⽬录加⼊PATH,根据版本不同,也可能是~/anaconda3/bin
echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
# 更新bashrc以⽴即⽣效
source ~/.bashrc
配置好PATH后,可以通过which conda或conda --version命令检查是否正确。假如安装的是Python 2.7对应的版本,运⾏python --version或python -V可以得到Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也说明该发⾏版默认的环境是Python 2.7。
Conda的环境管理
Conda的环境管理功能允许我们同时安装若⼲不同版本的Python,并能⾃由切换。对于上述安装过程,假设我们采⽤的是Python 2.7对应的安装包,那么Python 2.7就是默认的环境(默认名字是root,注意这个root不是超级管理员的意思)。
假设我们需要安装Python 3.4,此时,我们需要做的操作如下:
# 创建⼀个名为python34的环境,指定Python版本是3.4(不⽤管是3.4.x,conda会为我们⾃动寻3.4.x中的最新版本)
conda create --name python34 python=3.4
# 安装好后,使⽤activate激活某个环境
activate python34 # for Windows
source activate python34 # for Linux & Mac
# 激活后,会发现terminal输⼊的地⽅多了python34的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.4对应的命令加⼊PATH
# 此时,再次输⼊
python --version
# 可以得到`Python 3.4.5 :: Anaconda 4.1.1 (64-bit)`,即系统已经切换到了3.4的环境
# 如果想返回默认的python 2.7环境,运⾏
deactivate python34 # for Windows
source deactivate python34 # for Linux & Mac
# 删除⼀个已有的环境
c语言标识符的命名规则是什么conda remove --name python34 --all
⽤户安装的不同python环境都会被放在⽬录~/anaconda/envs下,可以在命令中运⾏conda info -e查看已安装的环境,当前被激活的环境会显⽰有⼀个星号或者括号。
说明:有些⽤户可能经常使⽤python 3.4环境,因此直接把~/anaconda/envs/python34下⾯的bin或者Scripts加⼊PATH,去除anaconda 对应的那个bin⽬录。这个办法,怎么说呢,也是可以的,但总觉得不是那么elegant……
如果直接按上⾯说的这么改PATH,你会发现conda命令⼜不到了(当然不到啦,因为conda在~/anaconda/bin⾥呢),这时候怎么办呢?⽅法有⼆:1. 显式地给出conda的绝对地址 2. 在python34环境中也安装conda⼯具(推荐)。
Conda的包管理
Conda的包管理就⽐较好理解了,这部分功能与pip类似。
例如,如果需要安装scipy:
# 安装scipy
conda install scipy
# conda会从从远程搜索scipy的相关信息和依赖项⽬,对于python 3.4,conda会同时安装numpy和mkl(运算加速的库)
python安装教程mac# 查看已经安装的packages
conda list
# 最新版的conda是从site-packages⽂件夹中搜索已经安装的包,不依赖于pip,因此可以显⽰出通过各种⽅式安装的包
conda的⼀些常⽤操作如下:
# 查看当前环境下已安装的包
conda list
# 查看某个指定环境的已安装包
vs中clrscrconda list -n python34
# 查package信息
conda search numpy
# 安装package
conda install -n python34 numpy
# 如果不⽤-n指定环境名称,则被安装在当前活跃环境
# 也可以通过-c指定通过某个channel安装
北辰软件库# 更新package
conda update -n python34 numpy
# 删除package
conda remove -n python34 numpy
前⾯已经提到,conda将conda、python等都视为package,因此,完全可以使⽤conda来管理conda和python的版本,例如
# 更新conda,保持conda最新
conda update conda
# 更新anaconda
conda update anaconda
# 更新python
conda update python
# 假设当前环境是python 3.4, conda会将python升级为3.4.x系列的当前最新版本
补充:如果创建新的python环境,⽐如3.4,运⾏conda create -n python34 python=3.4之后,conda仅安装python 3.4相关的必须项,如python, pip等,如果希望该环境像默认环境那样,安装anaconda集合包,只需要:
# 在当前环境下安装anaconda包集合
conda install anaconda
# 结合创建环境的命令,以上操作可以合并为
conda create -n python34 python=3.4 anaconda
# 也可以不⽤全部安装,根据需求安装⾃⼰需要的package即可
设置国内镜像
如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为的服务器在国外。所幸的是,清华TUNA镜像源有Anaconda仓库的镜像,我们将其加⼊conda的配置即可:
# 添加Anaconda的TUNA镜像
conda config --add channels mirrors.tuna.tsinghua.edu/anaconda/pkgs/free/
# TUNA的help中镜像地址加有引号,需要去掉
# 设置搜索时显⽰通道地址
vb编程难学吗毕业设计网页设计可以做什么conda config --set show_channel_urls yes
执⾏完上述命令后,会⽣成~/.condarc(Linux/Mac)或C:\Users\USER_NAME\.condarc⽂件,记录着我们对conda的配置,直接⼿动创建、编辑该⽂件是相同的效果。
Anaconda具有跨平台、包管理、环境管理的特点,因此很适合快速在新的机器上部署Python环境。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论