返回介绍

第 1 章 Python 入门

发布于 2024-01-21 17:11:03 字数 9365 浏览 0 评论 0 收藏 0

各位在学习新技术或新编程语言时,是否对准备工作发过愁呢?往往学习还没有正式开始,就先在准备工作上迷失了方向。好不容易硬着头皮开始准备,却发现安装完一个软件之后又不知道该干什么了。最后自以为准备完毕兴冲冲地要开工时,才注意到应该装好的东西并没有正确安装。到头来,大把的时间花在了准备阶段上,再无心情去学习了。类似这种情况不知道各位遇到过没有。

搭建 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 等。

1 http://www.cpan.org/

2 http://rubygems.org/

3 http://pear.php.net/

从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文