- 引言
- 本书涉及的内容
- 第 1 部分 Python 开发入门
- 第 1 章 Python 入门
- 第 2 章 开发 Web 应用
- 第 3 章 Python 项目的结构与包的创建
- 第 4 章 面向团队开发的工具
- 第 5 章 项目管理与审查
- 第 6 章 用 Mercurial 管理源码
- 第 7 章 完备文档的基础
- 第 8 章 模块分割设计与单元测试
- 第 9 章 Python 封装及其运用
- 第 10 章 用 Jenkins 持续集成
- 第 11 章 环境搭建与部署的自动化
- 第 12 章 应用的性能改善
- 第 13 章 让测试为我们服务
- 第 14 章 轻松使用 Django
- 第 15 章 方便好用的 Python 模块
- 附录 A VirtualBox 的设置
- 附录 B OS(Ubuntu)的设置
第 1 章 Python 入门
各位在学习新技术或新编程语言时,是否对准备工作发过愁呢?往往学习还没有正式开始,就先在准备工作上迷失了方向。好不容易硬着头皮开始准备,却发现安装完一个软件之后又不知道该干什么了。最后自以为准备完毕兴冲冲地要开工时,才注意到应该装好的东西并没有正确安装。到头来,大把的时间花在了准备阶段上,再无心情去学习了。类似这种情况不知道各位遇到过没有。
搭建 Python 开发环境时要考虑 OS 与版本等诸多组合,所以这个过程很难保证一帆风顺。独立开发者,尤其是自学成才的开发者们,大多是以网页或书籍上的信息作为参考,然后用自己独有的方法进行搭建。但即便如此,其中有些共通点还是需要了解的。
第 1 章中,我们将按部就班地了解对个人开发者来说共通的环境搭建顺序,让初学者也能顺利搭建环境。
因此,我们将在第 1 章中对下列项目进行重点学习。其中有部分内容涉及虚拟机,所以我们将学习时使用的本地实体机的 OS 称为“主 OS”,虚拟机的 OS 称为“客 OS”。已经自己搭建好 Python 开发环境的读者可以跳过本章。
· 安装 Python
· 安装 Mercurial
· 关于编辑器以及开发辅助工具
1.1 安装 Python
本节将带领各位安装一些便于在 Ubuntu 上使用 Python 进行开发的工具和包。
NOTE
本书以 Ubuntu 14.04(Server 版)作为 Python 开发环境的OS。另外,我们使用 OracleVMVirtualBox 承载客 OS。搭建环境的相关内容收录在附录 A 以及附录 B 中,初学者请先参考附录再阅读以下内容。
1.1.1 安装 deb 包
Ubuntu 可以用 apt-get 命令管理包。我们先来更新所有包,同时安装一些 Python 开发所需的包。
LIST 1.1 deb 包的更新、升级
$ sudo apt-get -y update $ sudo apt-get -y upgrade $ sudo apt-get -y install build-essential $ sudo apt-get -y install libsqlite3-dev $ sudo apt-get -y install libreadline6-dev $ sudo apt-get -y install libgdbm-dev $ sudo apt-get -y install zlib1g-dev $ sudo apt-get -y install libbz2-dev $ sudo apt-get -y install sqlite3 $ sudo apt-get -y install tk-dev $ sudo apt-get -y install zip $ sudo apt-get -y install libssl-dev
如 LIST 1.1 所示,我们在执行命令时添加了 -y 选项。这样一来,在安装过程中被询问 Yes 或 No 时,计算机会自动帮我们选择 Yes。如果各位想亲自逐个确认,可以将 -y 选项删去。
build-essential 包可以批量安装 Python 在 Ubuntu 上进行构建时所需的全部工具(gcc、make 等)。Python 本身在涉及某些包和模块时也必须有这些基本工具才能进行安装,因此建议各位先装好它们。
接下来安装 Python 相关的包(LIST 1.2)。
LIST 1.2 安装 Python 相关的包
# 安装python-dev $ sudo apt-get -y install python-dev # 安装pip $ wget https://bootstrap.pypa.io/get-pip.py $ sudo python get-pip.py
pip 是管理 Python 第三方库的工具。虽然它也能通过 apt 命令进行安装,但那样安装的版本较低,因此我们使用 get-pip.py 来安装最新版。
至此 Python 相关的包已经安装完毕。最后我们来查看一下 Ubuntu 默认自带的 Python 的版本。
LIST 1.3 查看 Python 的版本
$ python -V Python 2.7.6
输入 LIST 1.3 中的命令,我们便能够查看到当前安装的 Python 版本。Ubuntu 默认安装的是 Python 2.7.6。
专栏 ensurepip
Python 3.4 具有 ensurepip 模块,可在安装 Python 的同时捆绑安装pip。这个模块是在 Python 2.7.9 之后加入的。支持 ensurepip 的 Python 可以直接使用 pip,不需要执行 get-pip.py 来进行安装。另外,执行 python -m ensurepip -U 可以将 pip 更新到当前最新版本。
ensurepip
https://docs.python.org/2.7/library/ensurepip.html
PEP 477: Backport ensurepip(PEP 453) to Python 2.7
https://www.python.org/dev/peps/pep-0477
1.1.2 安装第三方包
用 pip install 命令可以安装第三方开发的包。
第三方包注册在 PyPI 上。这是一个用来共享 Python 包的版本库(Repository),任何人都可以将 Python 包上传到上面,同时也可以从上面自由下载想用的包。用 Python 开发软件时,常常要从 PyPI 安装所需的包。
NOTE
PyPI 的读音是 //'paɪˌpi: ai//。
PyPI 的构造类似 Perl 中的 CPAN1 、Ruby 中的 RubyGems2 、PHP 中的 PEAR3 等。
从 PyPI 安装包时需要用到 pip 命令。
NOTE
有关 pip 的详细内容我们将在第 3 章中详细了解。
这里简单了解一下 pip 的使用方法。首先我们来查看当前安装的 pip 的版本(LIST 1.4)。
LIST 1.4 查看 pip 的版本
$ pip --version pip 1.5.6 from /usr/local/lib/python2.7/dist-packages/ (python 2.7)
可以看到当前版本为 1.5.6(2014 年 12 月 9 日时)。
NOTE
上面例子中的 pip 安装在 dist-packages 目录下,只有通过 debian 和 ubuntu 包安装 Python 时才会安装到这个特有的位置。如果是通过 Linux 发行版、OS X、源码安装,则会安装在 site-packages 目录下。
通过 pip 安装第三方包的方法如下。首先我们来安装常用的 virtualenv 包(LIST 1.5)。
LIST 1.5 通过 pip 安装包
$ sudo pip install virtualenv -(中间省略)- Successfully installed virtualenv Cleaning up...
此后,包的安装基本都要用 pip 命令来完成。另外,上面例子中的 virtualenv 包安装在 /usr/local/lib/python2.7 目录下。
NOTE
pip 在安装一些需要构建的包时,会用 gcc 等编译器进行构建。在本书所用的 Ubuntu 下,我们已经通过 build-essential 安装了 gcc。Windows 下需要用 Microsoft Visual C++ Compiler for Python 2.7 或者 MinGW 等进行安装。这些都是免费的。
1.1.3 virtualenv 的使用方法
前面安装的 virtualenv 是用来搭建虚拟 Python 执行环境的。我们将其称为 virtualenv 环境。使用这个环境时,包不会安装到 /usr/local/lib/python2.7 下,而是安装到虚拟 virtualenv 环境中。
由于我们在前面已经完成了安装,所以这里可以直接查看版本(LIST 1.6)。
LIST 1.6 查看 virtualenv 的版本
$ virtualenv --version 1.11.6
NOTE
有关 virtualenv 的详细内容我们将在第 3 章中详细了解。
我们在未使用 virtualenv 的状态下查看当前版本(LIST 1.7)。
LIST 1.7 用 pip freeze 查看当前安装版本
$ pip freeze PAM==0.4.2 Twisted-Core==13.2.0 apt-xapian-index==0.45 argparse==1.2.1 configobj==4.7.2
输入 pip freeze 命令后,我们便能看到所有安装在 /usr/local/lib/python2.7 目录下的包。
接下来新建 virtualenv 环境。我们在主目录(HOME 目录)下创建工作目录,然后在这个工作目录下搭建 virtualenv 环境(LIST 1.8)。
LIST 1.8 搭建 virtualenv 环境
$ mkdir ~/work $ cd ~/work $ virtualenv venv
执行 LIST 1.8 中的命令后,work 目录下会自动生成 venv 目录。这就是 virtualenv 环境的目录。
接下来我们启动 virtualenv 环境。
LIST 1.9 启动 virtualenv 环境
$ source venv/bin/activate (venv)$
如 LIST 1.9 所示,通过 source 命令执行 activate ,启动 virtualenv 环境。如果终端的开头显示了“(venv) ”(图 1.1),就证明 virtualenv 环境已经启动。
图 1.1 activate 后的 virtualenv 的状态
我们在启动了 virtualenv 的状态下再次执行 pip freeze ,查看当前已安装的包(LIST 1.10)。
LIST 1.10 在虚拟环境下查看版本
(venv) $ pip freeze argparse==1.2.1 wsgiref==0.1.2
可以看到,在 virtualenv 环境刚刚搭建完成时,这个 Python 执行环境中没有添加安装任何包(argparse、wsgiref 是与 Python 本体捆绑的标准库)。
想关闭 virtualenv 环境时,输入 LIST 1.11 中的命令即可。
LIST 1.11 关闭 virtualenv 环境
(venv) $ deactivate $
如果我们不再需要某个 virtualenv 环境(本例中是 venv 目录),则可以直接用 rm -R venv 等命令将其连同所在目录一起删除。
1.1.4 多版本 Python 的使用
目前,Python 3.X 系列和 2.X 系列的开发是并行的,因此我们会遇到不同项目使用不同版本的 Python 的情况。本小节中,我们将学习如何在一个客 OS 环境下准备多个版本的 Python,以满足不同应用的需要。
Ubuntu 14.04 默认安装了 Python 2.7.6 和 Python 3.4.0。
LIST 1.12 查看 Python 的版本
$ python3 -V Python 3.4.0 $ python -V Python 2.7.6
现在我们将 Python 2.7 系列的最新版本 Python 2.7.94 安装到客 OS(Ubuntu 14.04)上。
4 http://www.python.org/downloads/release/python-279/
Ubuntu 14.04 上安装 Python 的方法有下列几种。
· 通过 Ubuntu 官方 deb 包安装
· 通过源文件构建安装
· 通过 PPA(Personal Package Archives,个人软件包档案)以 deb 包的形式安装
通过 deb 包的安装十分简便,但包中封装的不一定是最新版的 Python。某些版本的 Python 含有重要更新,这时候就需要我们通过源文件进行构建了。鉴于这类情况,我们将在这里介绍“通过源文件构建”这一安装方式(LIST 1.13)。
LIST 1.13 通过源文件构建并安装
$ wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz $ tar xvzf Python-2.7.9.tgz $ cd Python-2.7.9 $ LDFLAGS="-L/usr/lib/x86_64-linux-gnu" ./configure --prefix=/opt/python2.7.9 $ make $ sudo make install
该 Python 将被安装到 /opt/python2.7.9/bin 下,我们可以通过文件名中的版本号找到它。现在执行 Python 命令查看是否安装成功(LIST 1.14)。
LIST 1.14 查看 Python 2.7.9
$ /opt/python2.7.9/bin/python -V Python 2.7.9
到这里,Python 的安装就结束了。接下来我们看看如何在开发应用时区分使用各个版本的 Python。
NOTE
像 Python 2.6 这种官方 apt 版本库早已不支持的旧版本,我们可以通过PPA,即分享个人软件包的 apt 版本库进行安装(LIST 1.15)。但要注意,PPA 中的软件包全都是个人上传的,一切使用后果要由自己负责。
LIST 1.15 通过 PPA 以 deb 包的形式安装
$ sudo add-apt-repository ppa:fkrull/deadsnakes $ sudo apt-get -y update $ sudo apt-get -y install python2.6 $ python2.6 -V Python 2.6.9
NOTE
Python 的部分模块依赖于一些必须通过 apt 命令进行安装的包。对于这类 Python 模块,如果不事先用 apt 命令安装好包,则会发生 ImportError。
这种时候我们需要先用 apt 命令安装所需的包,然后再通过源文件进行构建。因此如果各位遇到 Python 模块无法使用的情况,可以考虑重新通过源文件构建一遍。有些 Python 的标准模块需要先安装 deb 包才能使用,具体内容如下所示。
Python 模块 | deb 包 |
zlib | zlib1g-dev |
sqlite3 | libsqlite3-dev |
readline | libreadline6-dev |
gdbm | libgdbm-dev |
bz2 | libbz2-dev |
Tkinter | tk-dev |
◉ 借助 virtualenv 分别使用不同版本的 Python
当 OS 中安装了多个 Python 时,我们可以通过完整路径指定 Python 命令,或者使用带版本号的 Python 命令(如 python2.7 和 python3.4 )来区分使用各版本。
不过,如果在搭建 virtualenv 环境时指定了该环境下的默认 Python,那么在启动该环境时,我们就不需要顾虑版本问题了。
LIST 1.16 指定 virtualenv 下执行的 Python
$ virtualenv --python=/opt/python2.7.9/bin/python venv2 $ source venv2/bin/activate (venv2)$ Python 2.7.9
根据 LIST 1.16 进行指定之后,以 /opt/python2.7.9/bin/python 为基础的 virtualenv 环境——venv2 就搭建完成了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论