三年前自己写给MPA学生的anaconda配置文档,有空上传上来,给更多刚开始入坑数据科学工具的同好们参考
原理部分
Jupyter Notebook的工作目录机制
事实1:Jupyter Notebook将启动命令的来源路径作为它本次的默认文件目录
如下图:
图中使用命令提示符手动启动Jupyter notebook(仅为演示,实际中很少这样做,因为麻烦,使用Anaconda的目的之一就是利用图形化操作界面,尽可能简化这种命令行模式),在C:\Users\link\anaconda3\Scripts 目录下用命令启动了Jupyter Notebook(红框第一行),那么在后续的启动信息中,可以清晰地看到,Jupyter Notebook本次将C:\Users\link\anaconda3\Scripts作为它的本地工作目录(红框第二行),这一次所有新建的文件都保存在这个目录中。
事实2:通过Anaconda启动Jupyter notebook时,命令的来源路径由Anaconda自动指定
通过Anaconda启动(包括在Navigator中点击“Launch”以及在Anaconda prompt交互框中输入“Jupyter notebook”两种方式)Jupyter Note时,Anaconda会自动给Jupyter传一个参数(可以理解为“命令信息”),让Jupter notebook将启动路径视为Anaconda配置文件中的参数c.NotebookApp.notebook_dir 的内容,通常情况下,这个内容是空白的,那么目录就默认为“我的文档”(win10下可能不再使用“我的文档”这个称呼,变成“此电脑——用户——用户名”文件夹)。
如下图:
以通过Anaconda Prompt启动为例,可以发现本次的本地工作目录均变成了”我的文档” 或者 “C:\Users\*用户名同名文件夹”(图中红框,演示用的计算机用户名为“link”,故最终路径为:“C:\Users\link”),在jupyter notebook内创建的文件也存储在相应目录下。
事实3:jupyter notebook可以在任意目录下使用
当jupyter 本身作为可以识别的命令,可以通过cmd执行jupyter notebook 在任意文件夹下启动 jupyter notebook服务,且工作目录以运行该命令的文件夹为准。
如下图
通过某种方式(在后续部分会详细介绍),使得命令提示符也能在任意文件夹使用jupyter notebook,从而成功在D:\data目录下(图中蓝框)启动了jupyter notebook服务,并且确定工作目录也是当前目录。
此时通过jupyter notebook创建的文件就保存在D:\data目录下
Windows系统中的path环境变量
命令提示符
通常情况下,我们在windows中如果想要执行一个程序/命令/操作,就必须输入它的完整路径+名称(无论是绝对路径还是相对路径),因为文件系统中有不同的磁盘盘符、文件夹、扩展名,直接输入名称,例如:某个程序名为“program”,系统是无法判断是用户想要运行C盘下的program.exe还是D盘下的program.exe,也不知道它是不是一条命令,从而提示无法运行。
一些例外情况是,系统内置的命令,比如,“netstat”是系统内置的命令,已经处于系统已知的路径中,那么任何计算机的用户都不需要特意设置netstat代指什么,直接输入“netstat”即可运行该命令。
Path环境变量
path环境变量的作用是:当要求系统运行一个程序/命令而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序/命令外,还应到哪些目录下去寻找;将应用程序或者附加功能的路径配置到path变量之后,使用这些自行安装的程序/命令就享有与内置命令一样的便捷性了。
例如:
配置java编程环境时,除了要通过exe安装程序安装好java,还需要手动配置JAVA_HOME等环境变量;
如果不配置就在命令提示符中使用javac、java等命令编译java文件、运行class类时,系统会提示”java不是内部或外部命令,也不是可运行的程序”;
同理,无论是Anaconda还是jupyter notebook,对于系统来说,它们都不是系统内置的,而是用户自行安装的,所以系统对于类似Anaconda、Python、jupyter notebook这类非系统自带的命令,都不可能自动地识别与执行,所以必须配置环境变量后才能在命令提示符中便携使用。(并非不配置就不能用,只是使用起来需要添加路径+一些手动参数,从而增加了无意义的麻烦)
综合结论
- 使用Jupyter notebook编写的文件保存在本地,但是具体保存的文件夹位置与jupyter notebook的启动时的路径有关
- Jupyter notebook不配置系统变量就只能通过Anaconda启用,或者以一种极其麻烦的方式从cmd启动
- 在2中的情况下,通过anaconda启用的jupyter notebook的默认路径是“我的文档”或者“C:\Users\用户名同名文件夹”;通过cmd启动的Jupyter notebook的路径很难控制,只能是jupyter notebook程序的安装路径,比“我的文档”更难找
- 通过配置path环境变量,可以让Jupyter notebook从cmd便携启动,且可以指定启动路径,从而使得jupyter notebook的文件保存位置自定义化。
应用操作
第一步:确认环境变量状态与待写入的anaconda路径
通过同时win(菜单键,按一下windows会弹出菜单)+R键,调出运行窗口,输入cmd后回车,打开命令提示符
在命令提示符中输入jupyter notebook后,按下回车键,观察反馈,若提示“jupyter不是内部或外部命令,也不是可运行的程序……”,则继续;如果直接运行了jupyter notebook,则说明计算机此前已经配置过path变量,可以跳过本步骤到后续第四步内容。
关闭命令提示符窗口,打开anaconda prompt
在anaconda prompt里面输入 pip --version 后按下回车,复制出现的目录地址的”\lib”前的内容,此处复制的是“C:\Users\Admin\anaconda3”(如图中红框所示,注意复制内容的开头无空格,末尾无 “\”符号 ;不同计算机得到的地址可能有差异,但一般来说,复制下来的地址的末尾都应该是”anaconda3”)
打开“此电脑”或者任意文件夹,把复制的内容粘贴到文件夹地址栏并回车,验证是否可以通过此地址访问到anaconda3的安装目录(没有提示“路径不存在”即说明成功)
第二步:将目录写入系统环境变量Path
把鼠标放在桌面的或者其他位置的“此电脑”图标上,右键打开右键菜单,选择“属性”
在出现的页面中,选择“高级系统设置”(华为笔记本的该选项位置可能与图中有轻微不同,但是也在这个页面中,请页面的右侧寻找该选项)
在弹出的窗口中点击环境变量,然后双击系统变量中的 path
在出现的页面中,点击“新建”,然后在新出现的一栏中粘贴第一步中要求复制的地址
继续点击“新建”,在新出现的一栏中,粘贴三次同样的地址,并分别在末尾加上
\scripts\
\Library\bin
\Library\mingw-w64\bin
输入完成后,依次点击所有的“确定”按钮以保存,直至回到之前的通过“右键——属性”打开的窗口
检查确认所有的“确定”都点击后,重启计算机
第三步:测试与确认
重启计算机后,通过同样的方式(win+R,然后输入cmd并运行)打开命令提示符
输入 jupyter ,此时应该不会提示“jupyter不是内部或外部命令,也不是可运行的程序……”,而是出现下图
此时说明path环境变量配置成功,以后用cmd也可以启动jupyter notebook了
第四步 :实战——指定单次jupyter notebook的代码目录
此前可以发现,通过anaconda启动的jupyter notebook时,创建的代码文件都保存在了“我的文档”或者“C:\Users\用户名同名文件夹”下(在C盘——用户文件夹很容易找到它);
但是,每次都要去这个文件夹找代码文件不是很方便;
因此,假设我们需要换一个地方存放代码文件,这里我们在D盘下创建“data visualization”文件夹,以它为例:
点击进入该文件夹,然后在地址栏输入 “cmd” 并回车以启动命令提示符,可以发现此时cmd的目录就是当前目录(见图中的红框),然后在cmd中输入 jupyter notebook 并回车,可以看到jupyter notebook正常启动,且启动后的界面就是当前D盘下的data visualization文件夹,而非“C盘下的users”文件夹。
至此,本次通过jupyter notebook新建的代码文件也会存放在“D:\data visualization”;
特别提示:每次启动jupyter notebook时都会根据启动方式决定文件夹位置,换言之,下次如果还需要存放在D:\data visualization,也需要按照本步骤的方式进行,不能一劳永逸;同样地,如果下次需要更换存放文件夹,只需要进入新的文件夹后,执行相同操作即可