Anaconda创建虚拟环境并使用Jupyter-notebook打开虚拟环境(开搞开搞)

     阅读:68

Anaconda

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。
安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载。
具体安装步骤自行百度。

虚拟环境

什么是虚拟环境?

一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。譬如,本次学习需要用到Django,我们可以做一个Django的虚拟环境,里面只需要安装Django相关包就可以了,需要Scrapy库,就在开辟一个独立空间来学习Scrapy库相关就行了。

为什么使用虚拟环境?

在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。如一下场景:

场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。如果没有安装虚拟环境,那么当你使用这两个项目时,你就需要 来回 的卸载安装了,这样很容易就给你的项目带来莫名的错误;

场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,想想就应该知道,如果不使用虚拟环境,这这两个项目可能无法同时使用,使用python3则公司之前的项目可能无法运行,反正则新项目运行有麻烦。而如果虚拟环境可以分别为这两个项目配置不同的运行环境,这样两个项目就可以同时运行。

Tips:其实虚拟环境好处也确实比较多,会给我们项目的开发带来许多的好处,但不要贪玩哦。

使用和管理虚拟环境

  1. 运行Anaconda Prompt
  2. 检验当前conda的版本
conda -V
  1. 创建虚拟环境:
conda create -n  env_name python=x.x
#同时可以安装指定库
conda create -n env_name numpy matplotlib python=3.6

env_name 为虚拟环境名称,x.x为虚拟环境python的版本,根据需求来定。

  1. 激活虚拟环境
conda activate env_name
  1. 退出虚拟环境
conda deactivate env_name
  1. 查看已有的虚拟环境
conda env list  或 conda info -e
  1. 如果没有进入到当前虚拟环境,使用-n env_name 的方式去指定对某个虚拟环境安装软件
# 查看指定环境下已安装的package
conda list -n env_name
# 安装指定环境下某个package
conda install -n env_name [package]
# 删除指定环境下某个package
conda remove -n env_name [package]
# 更新指定环境下某个package
conda update -n env_name [package]
  1. 重命名环境
conda create -n env_name1 --clone env_name2 
  1. 删除虚拟环境
    conda remove -n env_name --all
  2. 删除虚拟环境中的包
    conda remove --name $your_env_name $package_name(包名)
  3. 检查更新当前conda
conda update conda
  1. 换源
    有时用国外镜像源下载库的速度比较慢,因此可以将镜像源换位国内的。
    Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

然后运行 conda clean -i 清除索引缓存即可。

Jupyter Notebook

Jupyter notebook简介

Jupyter这个名字是它要服务的三种语言的缩写:Julia,PYThon和R,这个名字与“木星(jupiter)”谐音。
之前我们只能在普通的 Python shell 或者在IDE(集成开发环境)中写代码,然后在word中写文档来说明你的项目。这个过程很反锁,而且写完代码之后,还需要重头回顾一遍代码来写文档。最致命的地方在于,有些数据分析的中间结果,还需要重新跑代码,然后把结果弄到文档里给客户看。但是notebook 可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。

例如:
在这里插入图片描述

快速上手notebook

启动Jupyter notebook

安装Anaconda时自带Jupyter notebook,如果没有可以通过执行命令行pip3 install jupyter即可

  1. 双击Jupyter notebook图标。
    在这里插入图片描述
  2. 在终端中输入以下命令`
 Jupyter notebook

ps:如果同时启动多个Jupyter Notebook,由于默认端口“8888”被占用,因此地址栏中的数字将从“8888”起,每多启动一个Jupyter Notebook数字就加1,如“8889”、“8890”…

  1. 指定端口启动
jupyter notebook --port <port_number>

  1. 启动服务器但不打开浏览器
jupyter notebook --no-browser

关闭 notebook服务器

通过在终端中按两次 Ctrl + C,可以关闭整个服务器。

关闭Jupler notebook文件

对于关闭 notebook,可以通过选中文件,点击 “shutdown” 来操作操作,但请确认先保存。
在这里插入图片描述
或者直接关闭notebook的页面即可。
ps:这会立即关闭所有运行中的 notebook,记得关闭文件。
关闭notebook服务器后,下次启动再打开notebook,当你继续在该notebook中写代码时,发现之前的变量无法访问了。需要你在该notebook的Kernerl选项卡中选择“Run All”重新编译下之前的代码。
在这里插入图片描述

notebook 界面

Jupyter notebook有两种不同的键盘输入模式:

① 编辑模式:编辑代码,单元格显示绿色边框。

切换方式:单击单元格内,或者直接按键盘上 Enter 键,即可进入编辑模式。
在这里插入图片描述

② 命令模式:执行命令,比如在上添加一个单元格,在下添加一个单元格,删除选中的单元格等,单元格显示***蓝色***边框。

切换方式:单击单元格外任何位置,或者直接按键盘上 Esc 键,即可进入命令模式。
在这里插入图片描述

代码单元格

平时在 IDE 软件里敲代码一样,可以编写和执行代码,给变量赋值、定义函数和类、导入包等。可以通过 Shift + Enter 执行单元格代码。
在这里插入图片描述

Markdown 单元格

Markdowen模式:用来记笔记,可以加入链接、将文本样式设为粗体或斜体和设置代码格式。通过 Shift + Enter 或 Ctrl + Enter 可运行 Markdown 单元格,将 Markdown 呈现为格式化文本。
在code编辑模式下,Esc一下切换到命令模式,然后M键一下切换到markdown模式。在这里插入图片描述

重命名notebook

可以直接修改
在这里插入图片描述
或者点击“File”->Rename,对文件进行重命名
在这里插入图片描述
然后进行保存。
在这里插入图片描述

上传notebook文件在这里插入图片描述

上传完成后,点击上传的文件,就可以在notebook中打开了

下载notebook文件

点击File->Download as,可以选择多种格式下载你的notebook。可以根据下面的用途来选择不同的下载格式:

  • 如果想和客户分享数据分析成果,选择将notebook下载为HTML文件。
  • 如果希望将自己的数据分析成果和代码嵌入到项目中,可以选择Python(.py)模块,这样可以将我的代码融入项目中,成为子模块,方便和其他开发人员共同完成任务。
  • 如果想要在博客或文档中使用 notebook,我就选择Markdown格式。
  • 默认的notebook文件后缀是.ipynb

快捷键(网页上的Jupyter Notebook应用)

notebook 快捷键,能让你无需使用鼠标和工具栏,快速使用键盘与单元格交互。虽然了解这些快捷键需要花费一点时间,但熟练掌握之后,可以大大提高工作效率。快捷键可以通过单元格 蓝色 状态下按 “h” 来查看
在这里插入图片描述

1. "shift + enter" notebook单元格内执行代码,并且自动跳至下一个的单元格
2. "tab" 自动补齐代码,相当于eclipse的 alt + /
3. "shift + tab" 连按2次,显示注释,相当于eclipse的f2
 命令模式(蓝框)和 编辑模式(绿框)的切换:
	蓝 - 绿:"Enter", 绿 - 蓝 :"Esc"
4. 当前单元格下方创建单元格(命令模式下):"A"
5. 当前单元格上方创建单元格 (命令模式下)"B"
6. 当前单元格MarkDown模式和Code模式切换(命令模式下):m到c为"Y", c到m为"M"
7. 当前单元格内容增加行号(命令模式下):"L"
8. 删除单元格:连续两次按 "D"或者"x"
9. 保存:"S"

魔法(Magic)函数

Magic关键字是 IPython 的一些高级用法,可以运行特殊的命令,然后控制 notebook。例如,在 notebook 中可以使用%matplotlib 将 matplotlib 设置为以交互方式工作。
Magic 命令的前面带有一个或两个百分号(% 或 %%),分别代表行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。
比如:

1.运行外部python源文件:%run xxx.py
2.计算statement的运行时间:%time statement
3.计算statement的平均运行时间:%timeit statement
4.测试多行代码的平均运行时间:
    %%timeit
    statement1
    statement2
    statement3

当然还有很多 Magic 关键字的使用,更多内容请参考:http://ipython.readthedocs.io/en/stable/interactive/magics.html

Jupyter Notebook内核管理

  1. 查看所有kernel
 jupyter kernelspec list
  1. 删除kernel
jupyter kernelspec remove xxxx
  • 切换kernel
    一般情况下,可以新建文件来选择kernel。
    在这里插入图片描述
    但是有时候会显现无法切换kernel的情况:
    jupyter一直显示No module named ‘torch’,用cmd查看torch.version,可以打印出来。原因就是在使用Jupyter Notebook的时候,加载的仍然是默认的Python Kernel。
    首先查看所有kernel,看需要使用的kernel是否存在Jupyter Notebook中。
 jupyter kernelspec list

如果不在的话,可以通过一下方案解决:

  • . 安装ipykernel
 jupyter kernelspec list
conda install ipykernel
#如果不行的话可以使用
pip install ipykernel #不要问为什么,问就是不知道(计算机的神奇之处)
  • 激活虚拟环境
conda activate env_name
  • 将环境写入Notebook的kernel中
python -m ipykernel install --user --name env_name --display-name "name(jupyter显示名称)"
  • 打开Jupyter notebook,新建Python文件,即可看到创建的环境。
jupyter notebook(虚拟环境中执行该命令)

但是我执行该步骤后,虽然可以在jupyter中选择该内核(虚拟环境),但是torch库报错,在这里插入图片描述
然后我在终端的python编译器中输入代码import sys sys.executable,查看路径;发现可以发现二者路径不一样,使用Jupyter Notebook的时候,加载的仍然是默认的Python Kernel,而且在Anaconda Prompt中出现“ImportError: cannot import name ‘generator_to_async_generator’”。

import sys
sys.executable

我的解决方案是通过以下方式打开jupyter notebook即可(中间也安装了nb_conda_kernels等包,不知道问题的解决跟这些有没有关)。当然网上也有一些其他的解决方案。
在这里插入图片描述
此时此刻 ,jupyter notebook安装成功,我们可以在上面搞一些事情…,下集见

补充:

问题1:终端显示ImportError: cannot import name 'secure_write',jupyter界面显示jupyter连接失败到后台服务的连接没能建立, 我们会继续尝试重连, 请检查网络连接还有服务配置.
解决办法:首先更新 jupyter_client版本

pip install --upgrade jupyter_client

然后可能会显示"AttributeError: type object 'IOLoop' has no attribute 'initialized' ",这是因为tornado版本过高,不支持jupyter notebook,可以将 降低tornado版本

conda install tornado=4.5