Pyenv+Ipython+Jupyter

Pyenv

通常在我们所使用的系统上,如Linux或者macOS上Python默认版本是2.x。如果想让系统保持原有Python的又想使用新版本怎么办?

Pyenv就是一个Python版本管理器,使多个Python版本共存。

Pyenv项目地址

Pyenv工作原理其实就是利用系统的环境变量,PATH优先级。根据用户所在环境或者目录,使用不同版本的Python。

Pyenv作用:自动安装python解释器,管理python版本,管理python虚拟环境

部署Pyenv
1
2
3
4
5
6
7
8
9
10
11
环境CentOS7.
Pyenv使用shell编写(膜拜大神),安装前需要安装git(需要在github上拉取代码)

#curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
执行该命令可用自动安装pyenv环境

安装完毕后配置环境变量
#cat ~/.bash_profile
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Pyenv参数说明
1
2
3
4
5
6
7
8
9
10
#python --help
pyenv <command> [args]
command:
commands 列出参数
virtualenv 建立一个虚拟环境,python包管理器基于site(java打war包基于project)
install 安装python版本
uninstall 卸载虚拟环境
local 切换当前目录以及其子目录的python版本
global 切换全局默认的python版本,建议不要使用。会覆盖原来的python版本(一旦覆盖一些依赖的程序将会出错,如yum)
versions 查看系统已经安装的python软件包
安装Python3.5.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#安装前需要安装python所依赖的软件包
yum install -y gcc make patch gdbm-devel openssl-devel sqlite-devel zlib-devel bzip2-devel readline-devel

pyenv install --list
#查看仓库中python版本
pyenv install 3.5.2
#安装python-3.5.2版本

pyenv versions #查看pyenv中的python版本
* system #当前使用python版本,system表示系统的python版本,通常是2.6+
3.5.2

pyenv local 3.5.2
#切换成python-3.5.2版本

pyenv versions
system
* 3.5.2


#给虚拟环境命名
#格式:pyenv virtualenv VERSION NAME
#实例
pyenv virtualenv 3.5.2 zhuxyid
#创建名为zhuxuyue的python3.5.2的环境

pyenv local zhuxyid
#设置当前目录的python版本环境是zhuxyid所指向的python版本
#一旦切换过来在当前目录下会生成.python-version文件,内容为zhuxyid
#删除该文件环境就会指向默认python版本,文件可以手动创建,内容必须是已经创建的命名

pyenv uninstall zhuxuyue
#卸载zhuxuyue虚拟环境

pyenv uninstall 3.5.2
#卸载python 3.5.2环境

PIP

pip是一个python中包管理器,提供对python工具包的查找,下载,安装,卸载等功能,

pip也是easy_pip的改进版(老版本的python包管理器是easy_pip)。

pip类似CentOS的yum,perl中的cpan,ruby中的gem

常用命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
pip install PACKAGE_NAME
#安装最新版软件包

pip install PACKAGE.NAME -i http://mirrors.aliyun.com/pypi/simple/
#安装软件包使用阿里pip源

pip install PACKAGE_NAME==VERSION
#指定安装那个版本软件包

pip uninstall PACKAGE_NAME
#卸载软件包

pip search 'PACKAGE_NAME'
#查找软件包

pip install -U PACKAGE_NAME
#升级软件包

pip install -f PACKAGE_NAME
#查看软件包信息

pip install -r requirements.txt
#安装requirements.txt定义的软件包
#requirements.txt可以使用pip freeze > requirements.txt生成:)

pip freeze
#列出已安装软件包

默认pip官方源太慢,可使国内阿里云的pip源
mkdir ~/.pip
vi ~/.pip/pip.conf
[global]
timeout = 6000
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

Ipython

ipython是python最好用的交互式软件,是python标准解释器增强版,具有tab补全,对象自省,强大历史机制,内嵌源代码编辑,集成python调试器,%run机制,宏,创建多个环境以及系统调用shell的能力。

Ipython可通过python3自带的pip安装。

安装Ipython

安装Ipython很简单,只需要执行pip install ipython即可安装ipython。

Jupyter

jupyter notebook

Jupyter是一个开源web应用服务器,允许创建包含实时的代码,方程式,可视化,支持40多种语言如(Python,R等),支持分享笔记,互动输出,主要作用就是方便学习,如:数值模拟,数据可视化,统计建模,机器学习等。

安装Jupyter

pip install jupyter

这里我们使用jupyter向后台的Ipython的服务器发送请求,并显示结果,在浏览器的界面中使用单元Cell保存各种信息。Cell有多种类型,经常使用的有表示格式化文本的Markdown单元,和表示代码的Code单元。需要安装MarkDown使用:pip install markdown

启动jupyter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
jupyter notebook
#从命令行启动notebook服务器,启动后可使用http://localhost:8888访问,需要输入token,退出使用ctrl+c

jupyter notebook project.ipynb
#启动project.ipynb笔记本

jupyter notebook --port 8000
#以8000端口启动notebook

jupyter notebook --no-browser
#无需打开web游览器启动notebook

jupyter notebook --ip=0.0.0.0 --port 80 --no-browser
#绑定本地所有接口使用80端口启动notebook

#部署完成后就可以使用游览器与Ipython进行交互啦。

如果每次启动jupyter都需要输入token,如何使用密码方式登录呢?

在jupyter 5.5版本才支持密码方式登录

1
2
3
4
jupyter notebook --generate-config
#生成jupyter_notebook_config.py配置文件
jupyter notebook password
#设置登录密码,需要输入两次
Jupyterk notebook快捷键

编辑模式:允许输入代码/文本到单元格,通过绿色单元格表示

命令模式:结合系统的版本,如果是Linux可使用VI,并通过灰色单元格带有蓝色左边距

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#命令模式,按ESC
F: #查找和替换
Ctrl-Shift-P: #打开命令面板
Enter: #进入【编辑模式】
Shift-Enter: #运行(当前)单元,选中下一单元 #Tips:cell 单元(就指每一行的语句)
Ctrl-Enter: #仅运行(当前)单元
Alt-Enter: #运行(当前)单元,在下面插入一单元
Y: #单元转入代码状态(Code)
M: #单元转入标记状态(markdown)
R: #单元转入原始状态(raw)
1: #设定 1 级标题 #Tips:数值越大字体越小
2: #设定 2 级标题
3: #设定 3 级标题
4: #设定 4 级标题
5: #设定 5 级标题
6: #设定 6 级标题
K: #选择单元以上 #Tips:类似VIM里面命令模式下的“k”功能
Up: #同上
Down: #选择单元以下 #Tips:类似VIM里面命令模式下的“j”功能
J: #同上
Shift-K: #扩展选择单元以上(选择多行)
Shift-Up: #同上
Shift-Down: #扩展选择单元以下(选择多行)
Shift-J: #同上
A: #向(当前单元位置)上插入一个单元
B: #向(当前单元位置)下插入一个单元
X: #剪切所选择的单元
C: #复制所选择的单元
Shift-V: #粘贴所选择的单元到(当前单元位置)上面
V: #粘贴所选择的单元到(当前单元位置)下面
Z: #撤销一次单元的删除动作
D,D: #删除一个单元(配合shift-K or UP、shift-J or Donw可以删除多行)
Shift-M: #合并选中的行
Ctrl-S: #文件存盘
S: #文件存盘
L: #显示当前单元的【行号】
O: #转换(折叠)输出
Shift-O: #转换输出为有滚动条的
H: #查看快捷键的帮助信息
I,I: #中断Notebook内核
0,0: #重启Notebook内核
Esc: #关闭页面
Q: #关闭页面
Shift-Space: #向上回滚内容
Space: #向下回滚内容

#编辑模式,按Enter
Tab: #代码缩进,【代码补全】
Shift-Tab: #向前缩进,显示提示信息
Ctrl-]: #缩进
Ctrl-[: #恢复缩进
Ctrl-A: #选择全部
Ctrl-Z: #撤销
Ctrl-Shift-Z: #恢复撤销
Ctrl-Y: #同上
Ctrl-Home: #移动光标到单元开头
Ctrl-Up: #移动光标上移一次(行) #Tips:多行的时候使用一次仅移动一行
Ctrl-End: #移动光标到单元结尾
Ctrl-Down: #移动光标下移一次(行)
Ctrl-Left: #向左移动一个单词
Ctrl-Right: #向右移动一个单词
Ctrl-Backspace: #删除当前光标位置之前的单词
Ctrl-Delete: #删除当前光标位置之后的单词
Ctrl-M: #进入命令(Command Mode)模式
Ctrl-Shift-P: #打开命令面板(和命令模式一样)
Esc: #进入命令(Command Mode)模式
Shift-Enter: #运行单元内容,选择下一单元
Ctrl-Enter: #仅运行(当前)单元内容
Alt-Enter: #运行(当前)单元内容,插入一个新单元
Ctrl-Shift-Minus: #水平分割当前单元内容为新单元 #Tips:Minus =(减号"-"分隔符) Ctrl-Shift-“-”
看完了?赏个鸡腿钱,谢谢老板!