Python学习环境搭建

Posted by Mathew on 2017-02-11

学习 python 首先需要搭建一套 Python 运行环境, 在 UNIX/LINUX 下因为Python本身就是系统不可缺少的一个组件, 而很多时候我系统自带 Python 的版本不能满足我们的需求, 我们就需要安装新版本的 Python.

为什么不能动系统自带的 Python

很多系统自带的程序可能依赖着自带的 Python, 如果对其进行更新很有可能到时系统有些服务/应用 不可用, 所以为了保险起见, 我们一般不对系统自带的 Python 进行修改/更新.

Python 版本管理器 Pyenv

我们需要在一台主机上安装多版本的 Python, 可以使用 Pyenv 来管理 Python 的版本.

pyenv 是一个 bash 编写的程序, 能够轻松的切换 python 版本. 基于 rbenv/rubybuild 修改而来.

pyenv 相关资料

pyenv 主要有几个常用的功能

  • 安装 Python 解释器
  • 管理 Python 版本
  • 管理 Python 虚拟环境(相当于一个独立的版本)

下载/安装 pyenv

bash/zsh 中可以通过 下面这条命令安装

1
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

通过这条命令会安装 pyenv 以及 pyenv-virtualenv… 插件, 我们也可以通过 git clone https://github.com/yyuu/pyenv.git 到本地来自行安装.

安装完后会提示 将几条参数添加到 ~/bashrc

1
2
3
4
5
6
7
# 这只是我自己的配置, 请按提示操作
# Load pyenv automatically by adding
# the following to ~/.bash_profile:

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

pyenv 基本用法

pyenv 子命令, 我们可以通过 pyenv commands 来查看所有的子命令.

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
[root@maricle ~]#  pyenv commands
--version
activate
commands
completions
deactivate
doctor
exec
global
help
hooks
init
install
installer
local
offline-installer
prefix
rehash
root
shell
shims
uninstall
update
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
virtualenv
virtualenv-delete
virtualenv-init
virtualenv-prefix
virtualenvs
whence
which

常见命令介绍

  • local: 设置当前目录及其子目录的 python 版本
  • global: 设置全局 python 版本 (建议不要使用, 风险太大)
  • rehash: 一般在装完 python 的包之后, 都要做rehash
  • install: 安装指定的 python 版本
  • uninstall: 卸载指定的 python 版本
  • version: 查看当前环境 python 版本
  • versions: 查看当前系统上所有 pyenv 可用的 python 版本
  • virtualenv: 新建一个独立的 virtualenv

使用

1
2
3
1. install python

[root@maricle ~]# pyenv install 3.5.1 #通过指定一个 python 的版本来进行安装.
1
2
3
4
5
6
7
8
2. show python versions

[root@maricle ~]# pyenv versions #查看当前可用的所有 python 版本
* system (set by /root/.pyenv/version)
2.7.7
3.5.2
3.5.3
* python_learn (set by /root/.python-version)
1
2
3
4
3. show current python version

[root@maricle ~]# pyenv version #查看当前使用的 python 版本, 我这里使用的是 virtualenv, 所以并不能直接看到解释器的版本
python_learn (set by /root/.python-version)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
4. change current python version

[root@maricle ~]# pyenv local 3.5.2 #修改当前环境的 python 版本为3.5.2
[root@maricle ~]# pyenv version
3.5.2 (set by /root/.python-version)

验证:

[root@maricle ~]# pwd #当前在 ~ 目录
/root
[root@maricle ~]# python -V #python 版本为 3.5.2
Python 3.5.2
[root@maricle /]# python -V
Python 2.7.5 #python 版本为 2.7.5, 是 system 自带的版本
Python 2.7.5

关于 virtualenv

由于 python 的包依赖是基于 site 的, 也就意味着一台主机的 python 依赖是共享的, 但是这样其实很不科学, 在很多时候, 可能有多个项目依赖于某个包的不同版本, 这种时候, 我们就需要 virtualenv 来构建一套隔离环境.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
5. virtualenv operations

[root@maricle ~]# pyenv virtualenv 3.5.2 testenv #新建一个 virtualenv

命令使用方法: pyenv virtualenv $python_version $env_name

创建验证:

[root@maricle ~]# pyenv versions
system
* 3.5.2 (set by /root/.python-version)
3.5.2/envs/MaricleMathew # 可以看到刚才创建的MaricleMathew
3.5.3
MaricleMathew


[root@maricle ~]# pyenv local MaricleMathew #切换到 virtualenv
[root@maricle ~]# pyenv local MaricleMathew
(MaricleMathew) [root@maricle ~]# pyenv version
MaricleMathew (set by /root/.python-version)

(MaricleMathew) [root@maricle ~]# pyenv uninstall MaricleMathew
pyenv-virtualenv: remove /root/.pyenv/versions/3.5.2/envs/MaricleMathew? y
[root@maricle ~]#

使用 ipython, 而不是 python

ipython 提供了非常强大的 Python Shell, 支持补全, 还可以使用基于 webnotebook/jupyter notebook 来记录笔记, 支持交互式可视化的GUI工具包的使用,

安装 ipython

我们使用 python 的包管理工具 pip 来安装 ipythonjupyter

1
[root@maricle ~]#  pip install ipython jupyter

速度慢可以使用国内镜像

1
2
3
4
5
6
7
8
## pip 配置使用国内镜像

[root@maricle ~]# [ -d ~/.pip ] || mkdir ~/.pip
[root@maricle ~]# cat >> ~/.pip/pip.conf << EOF
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@maricle ~]#  ipython  #输入 ipython 即可进入 python shell 环境
Python 3.5.2 (default, Oct 14 2016, 23:35:05)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]:

[root@maricle ~]# jupyter-notebook #使用此命令即可进入 jupyter 的 web 界面

IDE 的选择

看个人喜好, 推荐使用 pycharm, 请支持正版或使用社区版.