第一章 - Python概述、环境搭建
操作系统准备
准备Linux最小系统即可。
如果在虚拟机中克隆,MAC地址会变。 这里使用CentOS 6.5+
p 2.x和3.x区别
- 语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3.x中意思是函数的2个参数
- 整除,例如1/2和1//2,3.x版本中/为自然除
- 3.x中raw_input重命名为input,不再使用raw_input
- round函数,在3.x中i.5的取整变为距离最近的偶数
- 字符串统一使用Unicode
- 异常的捕获、抛出的语法改变
开发环境——Pyenv
- Python多版本管理工具
- 管理Python解释器
- 管理Python版本
- 管理Python的虚拟环境
- 官网 https://github.com/pyenv/pyenv
Pyenv 安装
- 参照安装文档
- pyenv的安装
- python多版本安装
- pyenv之global、shell、local的设置
- pyenv的虚拟环境
- 更新:$ pyenv update
- 安装git
1 | yum install git -y |
- 安装Python编译依赖
1 | yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel |
- 创建用户python
1 | useradd python |
- 使用python用户登录后安装Pyenv
1 | curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash |
下载的 pyenv-installer 是一个shell脚本。
注意:
- 在 https://github.com/pyenv/pyenv-installer 有安装文档
Mac下pyenv与pyenv-virtualenv的安装和使用 如果curl出现 curl: (35) SSL connect error ,是nss版本低的问题,更新它。 可能需要配置一个有较新包的yum源
[updates] name=CentOS-Updates baseurl=https://mirrors.aliyun.com/centos/6.9/os/x86_64 gpgcheck=0
然后更新nss1
yum update nss
- 在python用户的~/.bash_profile中追加
1 | export PATH="/home/python/.pyenv/bin:$PATH" |
这样当用户启动的时候,会执行用户的 .bash_profile 中的脚本,就会启动pyenv。 安装好的pyenv 就在~/.pyenv中
Pyenv 使用
python 版本及path路径1
2
3python --version
python -V
echo $PATH
可以看到当前系统Python路径
pyenv 命令1
2pyenv
pyenv help install
列出所有可用版本1
pyenv install --list
安装指定版本1
2pyenv install 3.5.3 -v # 加 -v 可以看详细过程 verbose
pyenv versions
会从python官网下载安装压缩包到 /tmp 目录,很慢,为了提速,可选用cache方法。
使用缓存方式安装
在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。
不确定要哪一个文件,把下载的3个文件都放进去。一般放 ‘tar.xz’ 包。1
$ scp ~/Downloads/Python-3.5.3.tar.xz herodanny@10.211.55.6:~/.pyenv/cache
1 | pyenv install 3.5.3 -v |
安装后的python文件夹在 .pyenv/versions 下。
cache文件夹里有下载的压缩包。
pyenv 的 python版本控制
version 显示当前的python版本 versions 显示所有可用的python版本,和当前版本。1
2pyenv version
pyenv versions
global 全局设置
pyenv global 3.5.3
可以看到所有受pyenv控制的窗口中都是3.5.3的python版本了。 这里用global是作用于非root用户python用户上,如果是root用户安装,请不要使用global,否则影响太大。比如,这里使用的CentOS6.5就是Python2.6,使用了global就成了3.x,会带来很不好的影响。pyenv global system
回到原来系统版本。shell 会话设置
影响只作用于当前会话pyenv shell 3.5.3
是会话级的,一旦断开sessionid也变了,也不好用。local 本地设置
使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。1
2
3pyenv local 3.5.3
python -V
# 可能还是显示原来的版本,用pyenv version,要在虚拟环境中python -V 才会显示新的版本
也可以使用 anaconda,特别是 pyenv 不支持windows,pyenv 是自己下源码编,某些情况下可能不如 anaconda 直接编好的二进制分发。其实直接用 pycharm 就可以在 windows 或 linux 下创建虚拟环境。
Virtualenv 虚拟环境设置
为什么要使用虚拟环境? 因为刚才使用的Python环境都是一个公共的空间,如果多个项目使用不同Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使用了不同版本的库,等等这些问题都会带来冲突。最好的解决办法就是每一个项目独立运行自己的“独立小环境”中。
使用插件,在plugins/pyenv-virtualenv中pyenv virtualenv 3.5.3 mag353
使用python3.5.3版本创建出一个独立的虚拟空间 mag353。
1 | $ pyenv versions |
可以在版本列表中存在,就和3.5.3是一样的,就是一个版本了。以后只要使用这个虚拟版本,包就会按照到这些对应的目录下去,而不是使用3.5.3。
可以看到真实的虚拟环境是下 envs/ 目录下。
.pyenv/versions/ 下是软链接。
在需要设置python版本的文件夹路径下1
2pyenv local mag353
pyenv versions
怎么会起作用的,是利用了当前目录下隐藏文件.python-version和在 .bash_profile 中添加的那几指令。
现在可以对python进行版本的管理,包的管理。
pip 包管理器
- pip install xxx yyy
- pip list
- pip search keyword 或者 pypi
- pip help install
- pip install redis ipython
- pip install jupyter
- pip -V
- pip freeze 命令查看虚拟环境中安装了哪些包
- pip freeze > requirement
- pip install -r requirement
pip 是Python的包管理工具,3.x的版本直接带了,可以直接使用。 和yun一样为了使用国内镜像,如下配置。mkdir ~/.pip
配置文件在 ~/.pip/pip.conf
1 | [global] |
安装 ipython
ipython 是增强的交互式 Python 命令行工具,增强的Python Shell,自动补全、自动缩进、支持shell,增加了很多函数1
2pip install ipython
ipython
ipython中提供了魔术方法,在代码(包括注释)最上面输入 %%timeit 可以测试运行时间。
https://supergis.gitbooks.io/git_notebook/content/doc/jupyter_magics.html
安装 Jupyter
Jupyter 是基于WEB的交互式笔记本,其中可以非常方便的使用Python。
独立的交互式笔记本,后台使用Ipython。
安装Jupyter,也会安装ipython的。
1 | pip/pip3 install jupyter |
浏览器不能访问是服务器端防火墙问题。
Jupyter Notebook基本操作
https://jupyter-notebook.readthedocs.io/en/latest/index.html
在服务器上配置jupyter设置远程登录
Jupyter开发环境搭建
快捷键:shift + enter(运行)、ctrl + enter(运行)、dd(删除一行)、m(用mardkown)。
在 jupyter 中也是可以运行 js 代码的。第一行先输入 %%js。
_ 表示上次输出的结果。可使用 print() 看看。
在python中也表示不关心的变量。
导出包
虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已经安装的包,在另一个环境中安装这些包。
1 | (mag353) [python@node web]$ pip freeze > requirement |