数据科学家的一种工作环境 – virtualenv和Jupyter Notebook
工欲善其事,必先利其器
在进行工作之前,创建一个顺手的环境是必须的,那么什么是一个顺手的工作环境呢,针对数据分析而言,我认为需要满足以下几个方面:
隔离不同的应用领域的库 – 这一条适用于所有场景,不仅针对数据分析,因为python最为强大的地方是生态,针对不同的场景,有不同的库可以满足快速开发的要求,我们不希望在数据分析的环境中安装那些无关的(比如说串口通讯)的库,因此我们需要一个隔离环境
快速调试,快速获得灵感 – 数据分析应用场景下,往往需要不停的重组,不停的画图,来帮助理解数据
趁手的编辑器 – 敲代码的时候比较高效,有贴心的快捷键,最好还能修改主题
基于以上目标后两点,在数据分析领域,普遍使用Jupyter Notebook作为环境,Jupyter Notebook是一种交互式的开发环境,用户可以选择单独运行某一段python代码,并获得输出,而代码运行的变量,对象等数据都是保存在内存中,不会释放,因此在后边继续运行其他的代码片段的时候可以访问到之前创建好的数据结构。另外,Jupyter Notebook,会将代码的数据结果(可能是表格,可能是图像,也可能是普通的打印输出)连同代码本身保存在一个后缀为ipynb的文件中,因此在什么时候打开这样的文件都能看到之前运行的结果,方便结果分享。
当安装Python解释器的时候,所有的原生库和解释器本身默认会安装在系统目录,我们姑且称之为全局环境,我们当然可以直接在全局环境中安装我们需要的第三方库,如果对于你是一个只有一种python开发场景的用户,这样做也未尝不可,但是其实一旦遇到库的冲突,将会浪费很长的时间去解决或者重装,当你有多重不同的开发场景的时候,库冲突发生的可能性会变大,另外从优化维护的角度,我进也希望我们的项目环境仅仅包含该项目需要的库,因此使用全局环境并不是一个很好的实践。基于目标的第一点,我们希望针对不同的项目建立其自有的转用局部环境。
幸运的是,我们有很多选择,从python2时代过来的virtualenv, python3中自带的venv,以及专门针对于数据科学的anaconda,都是很好的选择。本文主要介绍virtualenv,原因很简单,因为个人除了需要数据分析的环境,同样还需要其他应用场景的环境。anaconda提供了一个很大的环境,同时使用其自有的包管理工具,而virtualenv很简洁,历史也很长,使用稳定,采用标准的pip作为包管理,同时根据virtualenv官方描述,它还提供了比python3中自带的venv模块更多的功能。总之,结论就是virtualenv能用更简洁的方法把这个需求解决的非常完美。
所以,我们将使用virtualenv 和 jupyter notebook的组合来作为我们的数据分析工作环境。
1
虚拟环境
1.1
创建
在使用virtualenv之后,virtualenv将是你安装在全局环境中的唯一的一个库。安装方法也很简单,使用pip就可以了。
pip install virtualenv
当virtualenv成功安装以后就可以使用它来创建针对你项目的本地或者局部环境,一般来说,我个人习惯是会在项目根目录防止这个本地环境,假设我们的项目更目录为 project-1,那么在命令行或者终端中进入项目目录,然后运行virtualenv来创建。
virtualenv venv -v
命令第一个参数venv是本地环境的目录名,执行完毕后会在project-1中创建一个venv的文件夹,而-v参数告诉工具将创建过程显示出来,方便我们跟踪进度,如果你的环境变量中有多个版本的全局python,你也可以通过-p参数来选择使用哪个全局环境。
virtualenv -p python3 venv -v
默认virtualenv不会导入你在全局环境中安装的第三方库,当然你可以可以使用–system-site-packages来告诉它导入全局环境中的第三方库,但是我不建议这么做,就像之前提到的,virtualenv将会是你再全局环境中的唯一一个第三方库。
1.2
激活
当本地环境创建好以后,需要激活才能使用,不然还会使用全局环境,根据不同的操作系统,激活的方式有点区别,Windows环境中是通过运行 .\venv\Scripts\activate.bat这个文件来激活的,而在Linux或者macOS则是source activate文件,该文件放置在 ./vnv/bin/activate。即在project-1根目录运行
rem Windows
.\venv\Scripts\activate.bat
# Linux or macOS
source ./vnv/bin/activate
激活以后命令行或者终端中会提示当前的本地环境名称,如下图
1.3
安装库
我们现在有了本地环境了,写下来就可以在本地环境中安装库文件了。首先我们安装jupyter notebook
pip install jupyter
等待安装完毕,如果安装过程比较慢,或者总是超时退出,可以指定使用国内的pypi源,例如,我们可以使用清华的源。
pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
正常安装以后,就可以利用下边这个命令启动jupyter notebook了
jupyter notebook
正常启动以后,会启动一个本地的web服务,终端会输出类似于下边这样的信息
http://localhost:8888/tree ,这就是jupyter notebook的工作环境了。
2
Jupyter Notebook环境
Jupyter Notebook是一个网页版的文件管理和代码编辑运行工具,因此使用其他工具实现的事情这里都可以实现,例如:
文件/文件夹操作 – 新建,删除,移动
文件编辑,尤其是代码文件编辑
执行shell/cmd命令
显示代码或者命令运行结果
Notebook支持几种文件的创建:
Python 3 – 源代码文件,后缀为ipynb
Text File – 普通文本文件
Folder – 文件夹
Terminal – 新建一个web版的终端/命令行窗口
大部分情况我们就是新建源代码文件。
2.1
内容编辑
所有这节内容中的输入和输出都会被保存到ipynb文件中,也就是说每次打开文件,代码和运行结果,以及文档都会展现出来。
编码和执行
Notebook提供了单元格用于输入代码,任何的python代码都可以放在里边并运行,标记为In,可以通过点击菜单中的Run或者使用shift+enter的快捷方式运行。而代码的运行结果会在该单元格下边展示出来,标记为Out。In 和 Out后边的数字标记了运行的顺序。
执行外部命令
在Notebook的单元格中可以直接运行终端/命令行命令,下图展示了查看当前目录下边的文件的命令和使用pip安装numpy库的命令,与在终端/命令行下运行不同,命令前边要使用感叹号(!)来告诉Notebook这是一个外部命令。
使用Markdown
Notebook的单元格还支持markdown语法,可以用于书写必要的说明,在菜单栏中将单元格类型从Code转换为Markdown
2.2
快捷键
所有的快捷键描述都可以在帮助菜单下找到,这里列一些常用的,好让读者快速了解哪些事情可以用快捷键来做。
编辑模式
编辑模式就是指编辑某一个单元格中的内容,通过鼠标左键点击单元格或者在单元格上回车进入编辑模式,在编辑模式下可以输入代码,书写Markdown,编辑模式下常用的快捷键有:
shift + enter :运行当前的单元格,并选中下一个单元格
ctrl + enter : 运行选中的单元格
alt + enter : 运行当前单元格,并在下边插入一个新的单元格
ctrl + s : 保存notebook
命令模式
在编辑模式下按 ESC 或者 ctrl+M 可以进入命令模式,命令模式主要是按整个单元格操作操作或者全局操作:
h :显示快捷键
j ,k,箭头上,箭头下:用于在单元格间上下移动
a :在单元格前插入单元格
b :在单元格后插入单元格
c :拷贝当前单元格
x :剪切当前单元格
p :粘贴单元格
dd :按两次d,删除当前单元格
y :更改单元格为代码
m :更改单元格为Markdown
p :打开命令菜单
s : 保存
space,shift + space :上下翻页
2.3
主题和插件
主题插件
如果默认的jupyter notebook的主题不和你的胃口,你可以使用 jupyter-themes 来更改主题。
按照文档介绍,使用pip安装这个库
pip install jupyterthemes
然后就可以在终端/命令行中通过 jt 命令来切换主题或者恢复默认
jt -t grade3 # 切换名为grade3的主题
jt -r # 恢复默认主题
安装以后的效果:
VIM模拟器
END
长按扫码关注
或用电脑访问网页以获取更好的阅读体验:
https://pythonlibrary.net/