AC手环 关注python
2018.03.16 09:22 字数 2791 阅读 37732评论 4喜欢 49web
参考文章:windows
不少学习python的初学者甚至学了有一段时间的人接触到anaconda或者其余虚拟环境工具时以为无从下手, 其主要缘由就是不明白这些工具究竟有什么用, 是用来作什么的, 为何要这么作, 好比笔者一开始也是不明白为啥除了python以外我还须要这么一个东西, 他和python到底有啥联系和区别, 为啥能用来管理python.安全
在使用过以后我才逐渐发现其实anaconda等环境管理工具究竟在作啥, 以及为何咱们须要他们来管理咱们的python环境异步
首先咱们须要先去了解Anaconda诞生的目的.再去了解Anaconda的使用方法.函数
首先咱们须要从python自己提及, 从根源寻找问题, 咱们在使用python语言编写程序以前须要下载一个python解释器, 这才是python的本体, 没了python解释器, 咱们即便写了无比正确优雅的python脚本也没办法运行, 那这个解释器在哪呢.就在你安装python的地方,好比个人在C:\Users\Acring\AppData\Local\Programs\Python\Python36-32
工具
image.png学习
项目结构如上图,这里有咱们很熟悉的python.exe, 也就是Python解释器编码
除此以外还有个很重要的东西, Lib, 也就是python包文件, 包括自带的包和第三方包spa
Lib文件夹
\
Lib目录如上图, 这里有python自带的包, 如笔者经常使用的日志包logging, 异步包 concurrent, 而全部的第三方包都放在site-packages文件夹里面
了解了这些咱们就对整个python环境有了大概的了解, 其实最关键的, 一个python环境中须要有一个解释器, 和一个包集合.
解释器根据python的版本大概分为2和3. python2和3之间没法互相兼容, 也就是说用python2语法写出来的脚本不必定能在python3的解释器中运行.
包集合中包含了自带的包和第三方包, 第三方包咱们通常经过pip或者easy_install来下载, 当一个python环境中不包含这个包, 那么引用了这个包的程序不能在该python环境中运行.
好比说一个爬虫脚本用到了第三方的requests包,而另外一台计算机是刚刚装好原始python的, 也就是说根本没有任何第三方包, 那么这个爬虫脚本是没法在另外一台机器上运行的.
python环境解释完了, 那么接下来就要说明这样的环境究竟产生哪些问题, 由于anaconda正式为了解决这些问题而诞生的
python2和python3在语法上是不兼容的, 那个人机器上应该装python2仍是python3呢, 可能一开始选一个学习就行了, 可是若是你要开发的程序必须使用python2而不能使用python3,那这时候你就不得再也不下载一个python2, 那这时候环境变量该设谁的目录呢, 若是仍是切换环境变量岂不是很麻烦.
若是我在本地只有一个python环境那我全部程序用到的各类包都只能放到同一个环境中, 致使环境混乱, 另外当我将写好的程序放到另外一电脑上运行时又会遇到缺乏相关包, 须要本身手动一个个下载的状况, 实在是烦人, 要是能每一个程序开发都选用不一样的环境, 而开发好以后又能将该程序须要的环境(第三方包)都独立打包出来就行了.
那么接下来就到咱们的anaconda上场了, 先让咱们安装好Anaconda而后我再来告诉你如何用Anaconda一个个解决咱们上面的问题吧.
推荐下载python3版本, 毕竟将来python2是要中止维护的.
按照安装程序提示一步步安装就行了, 安装完成以后会多几个应用
- Anaconda Navigtor :用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也能够在 Navigator 中手工实现。
- Jupyter notebook :基于web的交互式计算环境,能够编辑易于人们阅读的文档,用于展现数据分析的过程。
- qtconsole :一个可执行 IPython 的仿终端图形界面程序,相比 Python Shell 界面,qtconsole 能够直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。
- spyder :一个使用Python语言、跨平台的、科学运算集成开发环境。
暂时先不用管, 了解一下就好了
若是是windows的话须要去 控制面板\系统和安全\系统\高级系统设置\环境变量\用户变量\PATH
中添加 anaconda的安装目录的Scripts文件夹, 好比个人路径是D:\Software\Anaconda\Scripts
, 看我的安装路径不一样须要本身调整.
以后就能够打开命令行(最好用管理员模式打开) 输入 conda --version
若是输出conda 4.4.11
之类的就说明环境变量设置成功了.
为了不可能发生的错误, 咱们在命令行输入conda upgrade --all
先把全部工具包进行升级
接下来咱们就能够用anaconda来建立咱们一个个独立的python环境了.接下来的例子都是在命令行操做的,请打开你的命令行吧.
activate 能将咱们引入anaconda设定的虚拟环境中, 若是你后面什么参数都不加那么会进入anaconda自带的base环境,
你能够输入python试试, 这样会进入base环境的python解释器, 若是你把原来环境中的python环境去除掉会更能体会到, 这个时候在命令行中使用的已经不是你原来的python而是base环境下的python.而命令行前面也会多一个(base)
说明当前咱们处于的是base环境下.
activate
咱们固然不知足一个base环境, 咱们应该为本身的程序安装单独的虚拟环境.
建立一个名称为learn的虚拟环境并指定python版本为3(这里conda会自动找3中最新的版本下载)
conda create -n learn python=3
image.png
因而咱们就有了一个learn的虚拟环境, 接下来咱们切换到这个环境, 同样仍是用activae命令 后面加上要切换的环境名称
activate learn
若是忘记了名称咱们能够先用
conda env list
去查看全部的环境
如今的learn环境除了python自带的一些官方包以外是没有其余包的, 一个比较干净的环境咱们能够试试
先输入python
打开python解释器而后输入
>>> import requests
会报错找不到requests包, 很正常.接下来咱们就要演示如何去安装requests包
exit()
退出python解释器
输入
conda install requests
或者
pip install requests
来安装requests包.
安装完成以后咱们再输入python
进入解释器并import requests包, 此次必定就是成功的了.
那么怎么卸载一个包呢
conda remove requests
或者
pip uninstall requests
就行啦.
要查看当前环境中全部安装了的包能够用
conda list
若是想要导出当前环境的包信息能够用
conda env export > environment.yaml
将包信息存入yaml文件中.
当须要从新建立一个相同的虚拟环境时能够用
conda env create -f environment.yaml
其实命令很简单对不对, 我把一些经常使用的在下面给出来, 相信本身多打两次就能记住
activate // 切换到base环境
activate learn // 切换到learn环境
conda create -n learn python=3 // 建立一个名为learn的环境并指定python版本为3(的最新版本)
conda env list // 列出conda管理的全部环境
conda list // 列出当前环境的全部包
conda install requests 安装requests包
conda remove requests 卸载requets包
conda remove -n learn --all // 删除learn环境及下属全部包
conda update requests 更新requests包
conda env export > environment.yaml // 导出当前环境的包信息
conda env create -f environment.yaml // 用配置文件建立新的虚拟环境
或许你会以为奇怪为啥anaconda能作这些事, 他的原理究竟是什么, 咱们来看看anaconda的安装目录
image.png
这里只截取了一部分, 可是咱们和本文章最开头的python环境目录比较一下, 能够发现其实十分的类似, 其实这里就是base环境. 里面有着一个基本的python解释器, lLib里面也有base环境下的各类包文件.
那咱们本身建立的环境去哪了呢, 咱们能够看见一个envs, 这里就是咱们本身建立的各类虚拟环境的入口, 点进去看看
image.png
能够发现咱们以前建立的learn目录就在下面, 再点进去
image.png
这不就是一个标准的python环境目录吗?
这么一看, anaconda所谓的建立虚拟环境其实就是安装了一个真实的python环境, 只不过咱们能够经过activate,conda等命令去随意的切换咱们当前的python环境, 用不一样版本的解释器和不一样的包环境去运行python脚本.
在工做环境中咱们会集成开发环境去编码, 这里推荐JB公司的pycharm, 而pycharm也能很方便的和anaconda的虚拟环境结合
在Setting => Project => Project Interpreter
里面修改 Project Interpreter , 点击齿轮标志再点击Add Local为你某个环境的python.exe解释器就好了
image.png
好比你要在learn环境中编写程序, 那么就修改成D:\Software\Anaconda\envs\learn
, 能够看到这时候下面的依赖包也变成了learn环境中的包了.接下来咱们就能够在pycharm中愉快的编码了.
image.png
如今你是否是发现用上anaconda就能够十分优雅简单的解决上面所说起的单个python环境所带来的弊端了呢, 并且也明白了其实这一切的实现并无那么神奇.
固然anaconda除了包管理以外还在于其丰富数据分析包, 不过那就是另外一个内容了, 咱们先学会用anaconda去换一种方法管里本身的开发环境, 这已是一个很大的进步了.