参考:
https://www.jianshu.com/p/026a2c43b081
https://www.zhihu.com/question/58033789
https://my.oschina.net/ykbj/blog/2050025
https://blog.youkuaiyun.com/dlhlSC/article/details/84197059
https://www.sohu.com/a/206007674_100066998
https://www.jianshu.com/p/a85bc2a8fa56
- 直接在Anaconda官网下载安装包,官网地址https://www.anaconda.com/distribution/。不推荐,因为慢,而且通常是安装到一半就错误,如果您网速快随您(嘻嘻),安装相应版本就好,比如你是py3就安装3.选择适合你系统的安装包进行下载,下载完成后直接安装。
- Anaconda 安装包还可以到
清华镜像上](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)下载安装,优点是下载速度快。 - 下载后直接点击安装,无脑点击下一步,选择你的安装路径,我的安装路径为D:\Anaconda3,然后耐心等待,等到安装完成。
- 完成安装后,如果你是在windows上操作,打开 Anaconda Prompt ,后面我会将Anaconda Prompt统一称为“终端”。
- 可以在终端或命令提示符中键入 conda list,以查看你安装的内容。
-
为了避免后面使用报错,你需要先更新下所有包。在终端输入更新所有包的命令:
conda upgrade --all
并在提示是否更新的时候输入 y(Yes)让更新继续。初次安装下的软件包版本一般都比较老旧,因此提前更新可以避免未来不必要的问题。
-
安装了 Anaconda 之后,就可以很方便的管理包了(安装,卸载,更新)。
1)安装包
在终端中键入:
conda install package_name
例如,要安装 pandas,在终端中输入:
conda install pandas
你还可以同时安装多个包。类似 conda install pandas numpy 的命令会同时安装所有这些包。还可以通过添加版本号(例如 conda install numpy=1.10)来指定所需的包版本。
conda 还会自动为你安装依赖项。例如,scipy 依赖于 numpy,因为它使用并需要 numpy。如果你只安装 scipy (conda install scipy),则 conda 还会安装 numpy(如果尚未安装的话)。
2)卸载包
在终端中键入 :
conda remove package_names
上面命令中的package_names是指你要卸载包的名称,例如你想卸载pandas包:conda remove pandas
3)更新包
在终端中键入:
conda update package_name
如果想更新环境中的所有包(这样做常常很有用),使用:conda update --all。
4)列出已安装的包
#列出已安装的包 conda list
-
conda 可以为你不同的项目建立不同的运行环境。
0)安装nb_conda用于jupyter notebook自动关联nb_conda的环境。命令:conda install nb_conda 。
1)创建环境
在终端中使用:
conda create -n env_name package_names
上面的命令中,env_name 是设置环境的名称(-n 是指该命令后面的env_name是你要创建环境的名称),package_names 是你要安装在创建环境中的包名称。
例如,要创建环境名称为 py3 的环境并在其中安装 numpy,在终端中输入 conda create -n py3 pandas。
2)创建环境时,可以指定要安装在环境中的 Python 版本
当你同时使用 Python 2.x 和 Python 3.x 中的代码时这很有用。要创建具有特定 Python 版本的环境,例如创建环境名称为py3,并安装最新版本的Python3在终端中输入:
conda create -n py3 python=3
或也可以这样创建环境名称为py2,并安装最新版本的Python2:
conda create -n py2 python=2
因为我做的项目不同,有时候会用到Python2,还有时候会用到Python3。所以我在自己的计算机上创建了这两个环境,并分别取了这样的环境名称:py2,py3。这样我可以根据不同的项目轻松使用不同版本的python。
如果你要安装特定版本(例如 Python 3.6),请使用 conda create -n py python=3.6
3)进入环境
在 Windows 上,你可以使用 activate my_env进入。在 OSX/Linux 上使用 source activate my_env 进入环境。
进入环境后,你会在终端提示符中看到环境名称,下面图片是我进入py3的环境(这里的py3是我上面创建环境时自己起的名称,你可以起个自己喜欢的名称)。
进入环境后,我可以用conda list 查看环境中默认安装的几个包。
在环境中安装包的命令与前面一样:conda install package_name。
不过,这次你安装的特定包仅在你进入环境后才可用。
4)离开环境
在 Windows 上,终端中输入:
deactivate
在 OSX/Linux 上 输入:
conda deactivate
5)共享环境
共享环境非常有用,它能让其他人安装你的代码中使用的所有包,并确保这些包的版本正确。比如你开发了一个药店数据分析系统,你要提交给项目部署系统的王二狗来部署你的项目,但是王二狗并不知道你当时开发时使用的是哪个python版本,以及使用了哪些包和包的版本。这怎么办呢?
你可以在你当前的环境中终端中使用 conda env export > environment.yaml 将你当前的环境保存到文件中包保存为YAML文件(包括Pyhton版本和所有包的名称)。
命令的第一部分 conda env export 用于输出环境中的所有包的名称(包括 Python 版本)。
在“jupyter notebook工作文件夹”下(及你在终端中上图的路径)可以看到导出的环境文件:
在 GitHub 上共享代码时,最好同样创建环境文件并将其包括在代码库中。这能让其他人更轻松地安装你的代码的所有依赖项。
导出的环境文件,在其他电脑环境中如何使用呢?
首先在conda中进入你的环境,比如activate py3
然后在使用以下命令更新你的环境:
#其中-f表示你要导出文件在本地的路径,所以/path/to/environment.yml要换成你本地的实际路径 conda env update -f=/path/to/environment.yml
对于不使用 conda 的用户,我通常还会使用 pip freeze > environment.txt 将一个 txt文件导出并包括在其中。
举个例子你可能更容易理解这个使用场景:
首先,我在自己的电脑上在conda中将项目的包导出成environment.txt 文件:
然后我将该文件包含在项目的代码库中,其他项目成员即使在他的电脑上没有安装conda也可以使用该文件来安装和我一样的开发环境:
他在自己的电脑上进入python命令环境,然后运行以下命令就可以安装该项目需要的包:
pip install -r /path/requirements.txt
其中/path/requirements.txt是该文件在你电脑上的实际路径。
6)列出环境
我有时候会忘记自己创建的环境名称,这时候用 conda env list 就可以列出你创建的所有环境。
你会看到环境的列表,而且你当前所在环境的旁边会有一个星号。默认的环境(即当你不在选定环境中时使用的环境)名为 root。
7)删除环境
如果你不再使用某个环境,可以使用 conda env remove -n env_name 删除指定的环境(在这里环境名为 env_name)。
最后重新再强调下,不要被上面的命令吓到。虽然上述命令多,给了谁都记不住的。用的多了自然记住了。你只需要跟着上面步骤操作下,并理解了每一步是干什么的就可以了。后面遇到要做的事情,忘记了回头查官方文档就可以了。
-
-
运行jupyternotebook
启动:
在终端输入命令:
jupyter notebook
注意之后的操作中都不要关闭终端,因为终端一旦关闭则断开与本地服务的链接。
浏览器中的地址localhost代表的是本地,8888则代表端口号,相信这个地址对于熟悉网页开发的老铁肯定很熟悉。之后当你打开多个jupyternotebook页面时,则端口号会不停的加1,如8889,8890。
也可以选择先不打开浏览器:
输入以下命令:
jupyter notebook --no-browser
这个时候浏览器中并没有打开jupytenotebook,你可以等你有需求的时候在打开浏览器,并将终端中的地址复制到浏览器中,即可打开。
浏览器主页面中显示的所有文件都是我们本机上的文件。
要设置notebook的存储文件地址
①在你想要存储的目录地址创建文件夹并复制该路径
②通过下面命令获取配置文件路径:
jupyter notebook --generate-config
路径如终端中所示。
通过编辑器打开该py文件,在文件中搜索“c.NotebookApp.notebook_dir”
然后将前面的#号去掉并在后面的引号中填入刚才复制的路径。
然后退出编辑器,退出前记得保存改变内容。
然后回到命令终端再次输入:
jupyter notebook --generate-config
这个时候你会看到:
是否用你原来默认设置的改变覆盖修改后的py配置文件,输入y确定,N否定。这里我们输入N。
然后你需要关闭刚才打开的jupyternotebook然后重新打开。如此之后既可以看到一个干净清爽的页面,等待你往其中添油加醋。
-
在jupyter页面上,点击conda标签页后,可能会报错:EnvironmentLocationNotFound: Not a conda environment
解决方法:
找到Anaconda安装路径下文件:Anaconda3\Lib\site-packages\nb_conda\envmanager.py
修改内容:
FROM:
return { "environments": [root_env] + [get_info(env) for env in info['envs']] }
TO:
return { "environments": [root_env] + [get_info(env) for env in info['envs'] if env != root_env['dir']] }
然后重启jupyter。
-
进入jupyter界面如下:
红色部分Python2就是新建一个notebook,另外Terminals Unavailable是启动终端,这里linux和windows系统略有不同,由于windows下不支持类似linux的tty(控制终端),因此无法使用。
jupyter的使用功能
jupyter的基本单元是编程cell组成,也就是我们看到的In[ ]:
Jupyter有三种类型的cells:code cells,markdown cells,raw cells,常用的是code cells和 markdown cells类型。
Cells状态分为命令模式和编辑模式,Enter进入编辑模式,ESC进入命令模式,命令模式和编辑模式下支持很多操作快捷键,非常好用。
常用命令模式快捷键:
y: 单元进入代码状态
m: 转入markdown状态
r:转入raw状态
a: 上方插入新单元
b:下方插入新单元
x:剪切选中单元
c: 复制选中单元
shift-v:粘贴到上方单元
v:粘贴到下方单元
d,d(连续按两次d):删除选中单元
z:恢复最后删除单元
ctrl+Enter:运行本单元,两种模式都适用
shift+Enter:运行本单元,并跳到下个单元,两种模式都适用
alt+Enter:运行本单元,并在下方插入新单元,两种模式都适用
常用编辑模式快捷键:
Tab:代码补齐或缩进
Shift+Tab:调用方法提示,非常有用,在调用包中函数时,对于函数中的使用说明和相关参数配置,按两次shift+Tab可获取详细的方法提示。
Ctrl+]:缩进
Ctrl+[ : 解除缩进
Ctrl+A: 全选
Ctrl+Backspace:删除光标前面本行所有的内容
Ctrl+Delete:删除光标后本行所有的内容
Shift+Home:往前选取本行所有内容
Shift+End:往后选取本行所有内容;
-
Tab:
代码自动完成
在代码顶部添加
%config IPCompleter.greedy=True
这一行并且shift+回车运行,对于接下来运行过的内容都会被列入自动提示中。
按Tab键弹出自动提示
如下图,输入my然后Tab键就弹出上面自定义的两个变量名,然后按回车直接输入myCount
,按向下箭头键再回车就输入myNum
。
同样对于import
导入的功能模块也可以提示。比如下图,输入requ
然后按tab就自动补全输入requests
(因为已经导入,并且是唯一的,而刚才的myCount
和myNum
都是my
开头)。
输入到requests.
的时候按tab就会弹出requests
包含的所有功能命令,继续输入g
就得到下图的情况。运行或载入外部Python文件:
使用
%run
代码可以直接外部的执行.py文件,比如在Notebook文件夹内有一个a.py
文件:aa='haha' print(aa)
那么可以用下面代码直接在Notebook内运行它(注意这里的
./
表示在同一文件夹下)%run ./a print('>>'+aa)
如果使用%load
则直接把代码读进来(下面是%load ./a
运行的结果):可以保存为.py或pdf文件
从
file
菜单可以保存为多种格式。Markdown
Jupyter提供的markdown是一个非常实用的功能,有了markdown可以将写代码和内容编辑非常好的结合,特别代码内容说明,markdown是一种纯文本标记语言,满足标题,公式,字体加粗,颜色甚至流程图和表格的内容编辑;例如,下图中是使用markdown编写的,能够生成我们想要的公式和字体颜色。
一些简单的用法如下,编辑好之后使用ctrl+enter运行结果:
更多内容可以了解markdown相关教程。
Code Cells
Code模式下,除了一般的python代码编辑外,jupyter还支持一些其他的编程语言,如R,Julia,bash等。不过需要使用magic单元。Magic单元分为两种,一种是line magics,另外一种cell magics。Line magic是通过在前面加%,表示magic只在本行有效。
Cell magics:通过在前面加%%,表示在整个cell单元有效。比如下图中使用%%bash,产生了linux下的shell环境(window下不支持,不过可以使用%%cmd),这样就可以运行pwd和ls命令了。
其中一些比较常用的magic:
%matplotline inline在jupyter内打印图片;
%load:将本地py文件代码导入进来,例如 %load test.py
%run:运行本地代码,利用这个magic,我们可以把一些头文件,基本设置,共同函数写在不同的notebook内,用的时候运行一下就可以了。
例如下面,将公共的函数写在common_import.ipynb中,一些导入函数的配置文件存在utils.ipynb中,需要的时候使用%run直接运行一下,就可以把公共函数和环境配置好了。
这样可以将代码写成不同的模块,而不是全部写进一个notebook。%time:统计代码运行的时间,当然还有更多有趣的一些magic属性来方便我们的工作。
拓展功能
上面已经将jupyternotebook的基本功能和用法都涉及,但是直接工作的话感觉还是缺一点东西,类似下图这样能够生成notebook的内容目录和点击快速定位的功能。
当在notebook中编写了大量代码的时候,如果想要快速的定位到代码块或者给编辑内容的各级标题生成标题号,可以使用jupyter中的延伸功能模块,Jupyter Notebook extensions来完成这部分工作,Jupyter Notebook extensions可以通过conda安装,调用conda install -c conda-forge jupyter_contrib_nbextensions 。
安装完成后重新打开jupyter会发现多了Nbextensions项
点击Nbextensions后能够看到下图的界面:
通过勾选Table of Contents(2),能够生成notebook的浏览目录,如果希望在顶部生成目录的话,还需要点击Table ofContents下勾选下图中的项。
最终的效果如下:
至此jupyter的安装,常用用法和技巧就基本讲完了,当然jupyter的功能要不止这些,如果有兴趣可以继续拓展,当时对于日常工作使用的话,这些基本就够了。