Python项目开发实战 第2版.pdf

上传人:蓝*** 文档编号:294650 上传时间:2021-11-13 格式:PDF 页数:442 大小:19.43MB
返回 下载 相关 举报
Python项目开发实战 第2版.pdf_第1页
第1页 / 共442页
Python项目开发实战 第2版.pdf_第2页
第2页 / 共442页
Python项目开发实战 第2版.pdf_第3页
第3页 / 共442页
Python项目开发实战 第2版.pdf_第4页
第4页 / 共442页
Python项目开发实战 第2版.pdf_第5页
第5页 / 共442页
点击查看更多>>
资源描述

《Python项目开发实战 第2版.pdf》由会员分享,可在线阅读,更多相关《Python项目开发实战 第2版.pdf(442页珍藏版)》请在工友文库上搜索。

1、图书在版编目 (CIP) 数据 Python项目开发实战 / 日本BePROUD股份有限公司著;支鹏浩译. - 2版. - 北京: 人民邮电出版社,2017.1 (图灵程序设计丛书)ISBN 978-7-115-43856-0 . P . 日 支 . 软件工具程序设计 . TP311.56中国版本图书馆CIP数据核字 (2016) 第254060号Python Professional Programming Dai 2 HanCopyright BeProud Inc. 2015All rights reserved.First original Japanese edition publi

2、shed by SHUWA SYSTEM CO., LTD., Japan. Chinese (in simplified character only) translation rights arranged with SHUWA SYSTEM CO., LTD., Japan. through CREEK & RIVER Co., Ltd. and CREEK & RIVER SHANGHAI Co., Ltd.本书中文简体字版由 SHUWA SYSTEM CO., LTD., Japan. 授权人民邮电出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。

3、版权所有,侵权必究。内 容 提 要本书来自真正的开发现场,是 BePROUD 公司众多极客在真实项目中的经验总结和智慧结晶。作者从 Python 的环境搭建开始讲起,介绍了 Web 应用的开发方法、项目管理及审查、测试与高效部署、服务器调试等内容,尽可能网罗了 Python 项目开发流程中的方方面面,有助于开发者建立有序生产环境,提高开发效率,让编程事半功倍。此外,在本书中 Python 仅仅是一个载体,很多知识点在非 Python 下也适用。本书适合有一定基础的 Python 开发者,以及使用 PHP 或 Ruby 进行开发的读者阅读。 著日 日本BePROUD股份有限公司 译支鹏浩 责任编

4、辑傅志红 执行编辑高宇涵侯秀娟 责任印制彭志环 人民邮电出版社出版发行北京市丰台区成寿寺路11号 邮编100164电子邮件 网址http:/ 北京印刷 开本: 80010001/16 印张: 27.5 字数: 650千字 2017年1月第 1 版 印数: 1 -4 000册 2017年1月北京第 1 次印刷著作权合同登记号图字: 01-2015-6980号定价: 79.00元读者服务热线: (010)51095186转600印装质量热线: (010)81055316反盗版热线: (010)81055315广告经营许可证: 京东工商广字第8052号引 言迄今为止,BePROUD 公司已使用 Py

5、thon 开发了诸多项目。我们之所以撰写本书,是为了与各位读者分享我们在实践中总结出的一些技巧。同时,鉴于最近公司员工数量增长,我们把在 BePROUD 工作所需的知识也写入了本书,以便新的公司成员能尽快熟悉工作。因此本书从搭建工作环境开始讲起,逐步涉及 Web 应用的开发、项目管理及审查、测试代码的编写与高效部署、服务器调试等方面,网罗了 Python 项目开发工作中的一系列流程。书名中的“实战”一词就包含了“工作”的意思。书中所写的技巧主要源于我们的 Python2 开发经验。也正因为如此,本书将以 Python2 为例进行讲解。如今新的开发项目已经在使用 Python3,这些技巧转移到

6、Python3 上理应同样适用。进入正题之前,先来聊聊我们的日常思路。 极客 / 书虫常伴身边的公司BePROUD 里不乏极客和书虫们。在这里,很多人对特定领域的了解程度能吓掉你的下巴。在这里,人们一旦发现感兴趣的事,就会拿出私人时间来学习、实践。要知道,极客和书虫们不会为这种事情吝啬时间。正如人们印象中的那样,极客和书虫们大多有些怪癖,但 BePROUD 的员工都具备下列共识。 希望能不做不想做的事 希望学会好的方法并付诸实践 希望工作时有个好心情 希望能不做不想做的事在工作中,重复单调的作业是一种极其无趣的事,因此能一次办完的事谁都不想去办两次。另外,大家也都讨厌工序复杂、容易出错的工作。

7、所以要开动脑筋,把复杂的工序简单化,同时尽量减少出错的机会。 希望学会好的方法并付诸实践世界上有许多公认的好方法、新思路和新技巧,我们要勇于尝试,学习它们并付诸实践。使用好的方法必然能帮助我们削减不想做的工作。不过,方法的好坏不能人云亦云,我们必须选出对自己真正有帮助的方法,然后再将所学方法应用到实际业务当中。 希望工作时有个好心情现在,我们学会了优秀的方法、削减了繁杂的工作,之后自然希望带着好心情去工作。此时不妨给 Skype 做个好玩的 bot,或者在下班后找个会议室搞一场妙趣横生的快速演讲。我们希望大家能在保质保量完成工作的同时有个好心情,而不是只把公司当作工作的场所。这是我们的理念。本

8、书的内容全部基于事实,都是 BePROUD 员工实际尝试、实践过的。我们希望给各位提供一些能实际应用且行之有效的知识,而不是让各位去死记硬背一大堆晦涩难懂的概念。我们很愿意看到本书的知识能对各位有所帮助,愿各位能在工作中有个好心情。 谢辞本书在编撰过程中承蒙多名 IT 业界高人指点:寺田学(terapyon) 、金子望、关根裕纪(checkpoint) 、畠弥峰(flag_boy) 、小坂健二朗(inoshiro) 、筒井隆次(ryu22e) 、永井孝(ngi644) 、中西直树(nk24) 、尾曾越雅文、柴田正明(_mshibata) 、真幡康德(mahata) 、中石宜亨(eiryplus

9、) 。各位在百忙之中仍担起审校工作,慷慨赐教,我们在此表示由衷的感谢。此外还有 BePROUD 公司的 haru、altnight、masaya、crohaco、nakagami、yyyk,感谢几位一边处理着公司内繁忙的开发工作,一边见缝插针地为本书进行审校。最后感谢各位未能在著者处署名的 BePROUD 员工。如果没有各位员工长期以来的切磋琢磨,这本书永远不会问世。至此,希望这本集诸人之力编撰出来的书,能为 IT 业界出一份绵薄之力。全体执笔者2015 年 1 月iv 引言 本书网址http:/ 本书介绍的软件版本和 URL 均为截止到 2015 年 1 月底的最新信息,当前可能已发生变更。

10、前 言 本书涉及的内容本书分为 4 个部分,共 15 章。第 1 部分“Python 开发入门”的重点将放在个人开发。内容涵盖 Python 开发过程中必不可少的工具的安装(第 1 章) ,简单的 Web 应用开发(第 2 章)以及 Python 项目的结构与包的创建(第 3 章) 。第 2 部分“团队开发的周期”将为各位说明多人团队开发的相关问题。这部分将重点介绍团队高效开发过程中不可或缺的技术和技巧,内容涵盖团队开发前的环境调整(第 4 章) 、项目管理与审查(第 5 章) 、源码管理(第 6 章) 、文档(第 7 章) 、模块设计与单元测试(第 8 章) 、封装及其运用(第 9 章) 、

11、持续集成(第 10 章)等。第 3 部分“服务公开”将向各位讲解如何搭建与运用正式环境公开 Web 服务(第 11 章) ,此外就是有关性能调节的一些方法(第 12 章) 。第 4 部分“加速开发的技巧”可以说是加速开发的一些小贴士。例如将测试的概念导入整个开发流程以加快项目进度(第 13 章) ,Django 的基础及其进阶性、实践性的用法(第 14 章) ,Python 的辅助模块(第 15 章)等。 阅读本书前的准备环境及版本 OS:Ubuntu-14.04 Python:2.7.6 Bash:4.3 从第 2 章起,如无特别说明,则运行环境皆由 virtualenv 搭建。关于 OS实

12、体机使用 Windows/OS X/Linux,服务器的测试环境使用虚拟机上的 Ubuntu。Python 的官方手册https:/docs.python.org/2.7/我们仅对 Python 官方手册中的内容做最低限度的介绍,部分说明会被省略。因此建议各位vi 前言手边时常准备一份参考手册以便阅读。Python 的官方教程非常适用于学习 Python 的基本安装流程、语法、术语、类以及模块。本书将以各位看过这份教程为前提进行讲解。Unix/Linux 的一般命令操作本书虽以 Ubuntu Linux 为前提讲解,但书中不对 Ubuntu Linux 的基本命令操作进行说明。关于 PyPI(

13、PythonPackageIndex)PyPIA是一个集中管理包的网站,pip 等自动包安装工具会用到它。本书使用的包也来自 PyPI。关于敏捷过程与极限编程本书并不对敏捷过程(Agile Process)和极限编程(ExtremeProgramming)做单独的说明。如今在许多书籍和网站上都能找到这二者的介绍,感兴趣的读者可以去读一读。本书面向的人群 希望改善个人开发环境的人 希望改善团队开发的人 想学习工作中可使用的 Python 技巧的人 新加入 BePROUD 公司项目的成员Ahttps:/pypi.python.org/pypi 注意 本书基于作者本人的调查结果而成。 我们在加工本书

14、时力求完美。不过若您发现本书存在不足和错误、漏记等问题,请书面联系出版方。 对于因本书内容运用不当而导致的结果及其影响,无论是否因上述两项内容引起,我们均不负责,请知悉。 未获得出版方书面许可不得全部或部分复制本书。 商标等 本书已省略TM 等符号。 Python 徽标是 the Python Software Foundation 的商标。 Django 和 Django 徽标是 Django Software Foundation 的商标。 Google App Engine 是 Google Inc. 的商标。 Jenkins 是 SOFTWARE IN PUBLIC INTEREST,

15、 INC. 的商标。 nginx 是 Nginx Software Inc. 的商标。 VirtualBox 是 ORACLE AMERICA, INC. 的商标。 Ubuntu 是 Canonical Limited 的商标。 此外,公司名和商品名、系统名一般为各开发者的注册商标。 本书注册商标中还使用了普遍使用的通用名。目 录第 1 部分Python 开发入门 1第 1 章Python 入门 .21.1安装 Python.21.1.1安装 deb 包.31.1.2安装第三方包.41.1.3virtualenv 的使用方法.51.1.4多版本 Python 的使用.71.2安装 Mercur

16、ial.91.2.1Mercurial 概述.101.2.2安装 Mercurial.101.2.3创建版本库.111.2.4文件操作 .121.3编辑器与辅助开发工具 .141.3.1编辑器.141.3.2开发辅助工具.201.4小结.22第 2 章开发 Web 应用 .242.1了解 Web 应用 .242.1.1Web 应用是什么.242.1.2Web 应用与桌面应用的区别.252.1.3Web 应用的机制.252.2前置准备.282.2.1关于 Flask.282.2.2安装 Flask.282.3Web 应用的开发流程 .292.4明确要开发什么应用 .302.4.1留言板应用的需求

17、.302.4.2明确必备的功能.302.4.3明确必备的页面.312.5页面设计.312.5.1确定成品页面的形式.31viii 目录2.5.2编写 HTML 和 CSS .322.6实现功能.372.6.1保存留言数据.372.6.2获取已保存的留言列表.382.6.3用模板引擎显示页面.392.6.4准备评论接收方的 URL .422.6.5调整模板的输出.432.7查看运行情况.452.8小结.47第 3 章Python 项目的结构与包的创建 .483.1Python 项目.483.2环境与工具.493.2.1用 virtualenv 搭建独立环境.493.2.2用 pip 安装程序包.

18、553.2.3小结 .623.3文件结构与发布程序包 .623.3.1编写 setup.py.623.3.2留言板的项目结构.643.3.3setup.py 与 MANIFEST.in设置程序包信息与捆绑的文件.653.3.4setup.py创建执行命令.693.3.5pythonsetup.pysdist创建源码发布程序包.713.3.6提交至版本库.713.3.7README.rst开发环境设置流程 .733.3.8变更依赖包.753.3.9通过 requirements.txt 固定开发版本 .773.3.10pythonsetup.pybdist_wheel制作用于 wheel 发布的

19、程序包.783.3.11上传到 PyPI 并公开.793.3.12小结 .853.4小结.86第 2 部分团队开发的周期 87第 4 章面向团队开发的工具 .884.1问题跟踪系统.884.1.1Redmine .884.1.2安装 Redmine .894.1.3Redmine 的设置.914.1.4插件 .934.2版本控制系统.94目录 ix4.2.1Mercurial 与 Redmine 的联动.944.2.2用于生成版本库的插件.954.3聊天系统.974.3.1Slack.974.3.2Slack 的特点 .984.3.3Slack 做不到的事 .1014.3.4Slack 的注册

20、 .1024.4对团队开发有帮助的工具 .1024.4.1Dropbox.1024.4.2GoogleDrive.1024.5小结.103第 5 章项目管理与审查.1045.1项目管理与问题的区分使用 .1045.1.1项目管理的前置准备工作.1045.1.2创建问题 .1055.1.3整理问题 .1075.1.4分割问题 .1075.2问题模板.1085.2.1安装插件 .1085.2.2问题模板的使用方法.1095.2.3GlobalIssueTemplates .1115.2.4问题模板示例.1125.3问题驱动开发.1145.3.1别急着敲代码,先建问题.1145.3.2创建与问题编号

21、同名的分支.1155.3.3让发布与分支相对应.1155.3.4分支的合并.1165.4审查.1175.4.1为什么需要审查.1175.4.2审查委托:代码审查篇.1185.4.3审查委托:作业审查篇.1195.4.4实施审查:代码审查篇.1205.4.5实施审查:作业审查篇.1235.5小结.123第 6 章用 Mercurial 管理源码 .1256.1Mercurial 版本库的管理与设置.1256.1.1服务器上的 Uinx 用户群设置 .1256.1.2创建版本库.1266.1.3hgrc 的设置.127x 目录6.1.4使用设置好的版本库.1276.1.5使用 hgweb 建立简易

22、中央版本库 .1276.2灵活使用“钩子” .1286.2.1钩子功能的设置方法.1296.2.2尝试钩子脚本.1296.2.3钩子事件 .1306.2.4钩子功能的执行时机.1316.2.5编写钩子脚本.1346.3分支的操作.1366.4关于合并.1376.4.1未发生冲突的合并.1386.4.2合并时发生冲突以及用文本编辑器解决冲突的方法.1406.4.3合并的类型与冲突.1436.4.4用 GUI 的合并工具进行合并.1446.5GUI 客户端 .1476.5.1GUI 客户端的介绍.1476.5.2GUI 客户端的优点.1496.5.3GUI 客户端的缺点.1516.6考虑实际运用的

23、 BePROUDMercurialWorkflow.1526.6.1概述 .1526.6.2背景 .1526.6.3版本库的结构.1536.6.4提交源码 .1546.6.5提交设计 .1566.6.6分支的合并.1576.6.7集成分支 .1586.7小结.160第 7 章完备文档的基础.1627.1要记得给项目写文档 .1627.1.1写文档时不想做的事.1627.1.2什么样的状态让人想写文档.1647.2Sphinx 的基础与安装 .1657.2.1Sphinx 的安装.1667.2.2reStructuredText 入门 .1677.2.3用 Sphinx 写结构化文档的流程.16

24、97.2.4Sphinx 扩展.1747.3导入 Sphinx 可解决的问题与新出现的问题.1757.3.1由于是纯文本,所以能在平时用的编辑器上写文档.1767.3.2 信息与视图相分离,所以能集中精神编辑内容,不用顾虑装饰等外观问题.1767.3.3可根据一个源码输出 PDF 等多种格式 .179目录 xi7.3.4通过结构化,文档可分成几个文件来写 .1807.3.5能用 Mercurial 等轻松实现版本管理 .1817.3.6API 参考手册与程序的管理一体化.1827.3.7通过 Web 浏览器共享.1847.3.8导入 Sphinx 后仍存在的问题.1857.4文档集的创建与使用

25、 .1867.4.1什么是文档集.1867.4.2项目所需文档的一览表.1877.4.3面向项目组长、经理.1877.4.4面向设计者.1897.4.5面向开发者.1897.4.6面向客户 .1897.5小结.190第 8 章模块分割设计与单元测试 .1918.1模块分割设计.1918.1.1功能设计 .1918.1.2构成 Web 应用的组件.1928.1.3组件设计 .1948.1.4模块与程序包.1958.2测试.1978.2.1测试的种类.1978.2.2编写单元测试.1988.2.3从单元测试中剔除环境依赖.2098.2.4用 WebTest 做功能测试 .2158.3通过测试改良设

26、计 .2198.4推进测试自动化.2218.4.1用 tox 自动生成执行测试的环境.2218.4.2可重复使用的测试环境.2238.5小结.223第 9 章Python 封装及其运用 .2249.1使用程序包.2249.1.1程序包的版本指定.2249.1.2从非 PyPI 服务器安装程序包.2269.1.3程序包的发布格式.2289.1.4生成 wheelhouse 的方法 .2309.1.5从 wheelhouse 安装 .2319.2巧用程序包.2329.2.1私密发布 .2329.2.2巧用 requirements.txt .232xii 目录9.2.3requirements.t

27、xt 层级化.2339.2.4为部署和 CI+tox 准备的 requiremests.2349.2.5通过 requirements.txt 指定库的版本 .2359.3小结.236第 10 章用 Jenkins 持续集成 .23710.1什么是持续集成.23710.1.1持续集成的简介.23710.1.2Jenkins 简介 .23910.2Jenkins 的安装.23910.2.1安装 Jenkins 主体程序.23910.2.2本章将用到的 Jenkins 插件 .24010.3执行测试代码.24110.3.1让 Jenkins 运行简单的测试代码 .24110.3.2添加 Job.2

28、4210.3.3Job 的成功与失败.24410.4测试结果输出到报告 .24610.4.1安装 pytest.24610.4.2调用 pytest 命令.24610.4.3根据 pytest 更改 Jenkins 的设置.24610.5显示覆盖率报告.24710.5.1安装 pytest-cov.24810.5.2从 pytest 获取覆盖率.24810.5.3读取覆盖率报告.24810.6执行 Django 的测试.25010.6.1安装 Python 模块.25010.6.2Django 的调整.25110.6.3示例代码 .25110.6.4Jenkins 的调整.25510.6.5“

29、构建后操作”选项卡的设置 .25710.7通过 Jenkins 构建文档.26010.7.1安装 Sphinx.26110.7.2在 Jenkins 添加 Job.26110.7.3Sphinx 构建发出警告时令 Job 失败.26110.7.4查看成果 .26210.7.5通过 TaskScannerPlugin 管理 TODO.26310.7.6TaskScannerPlugin 的设置示例 .26410.8Jenkins 进阶技巧.26510.8.1好用的功能.26510.8.2进一步改善.26710.9小结.268目录 xiii第 3 部分服务公开 269第 11 章环境搭建与部署的自

30、动化 .27011.1确定所需环境的内容 .27011.1.1网络结构 .27011.1.2服务器搭建内容的结构化.27211.1.3用户的设置.27311.1.4选定程序包.27411.1.5中间件的设置.27711.1.6部署 .28011.2用 Ansible 实现自动化作业 .28211.2.1Ansible 简介.28211.2.2文件结构 .28711.2.3执行 Ansible.28811.2.4与最初确定的结构相对应.28811.2.5将各步骤 Ansible 化 .28911.2.6整理 Ansible 的执行环境 .29511.3小结.296第 12 章应用的性能改善 .2

31、9812.1Web 应用的性能 .29812.1.1Web 应用面对大量集中请求时会产生哪些问题.29812.1.2针对高负荷的对策.29912.2评估留言板应用的性能 .30012.2.1什么是应用的性能.30012.2.2安装 ApacheBench.30012.2.3用 ApachBench 评估性能.30112.3gunicorn 简介 .30312.3.1安装 gunicorn.30412.3.2在 gunicorn 上运行应用.30412.4nginx 简介.30612.4.1安装 nginx.30612.4.2检测 nginx 的性能.30712.5在 nginx 和 gunic

32、orn 上运行应用 .31012.5.1gunicorn 的设置 .31012.5.2nginx 的设置 .31012.5.3评估 nginx+gunicorn 的性能.31112.5.4性能比较 .31212.6小结.313xiv 目录第 4 部分加速开发的技巧 315第 13 章让测试为我们服务.31613.1认识现状:测试的客观环境.31613.2将测试导入开发各个阶段 .31713.2.1文档的测试(审查).31713.2.2测试设计的编写方法(输入与输出) .32013.2.3测试的实施与测试阶段的轮换(做什么,做多少).32313.3小结:测试并不可怕.326第 14 章轻松使用

33、Django .32714.1Django 简介.32714.1.1Django 的安装.32714.1.2Django 的架构.32714.1.3Django 的文档.33114.2数据库的迁移.33114.2.1什么是数据库的迁移.33114.2.2Django 的迁移功能.33214.3fixturereplacement.33914.3.1什么是测试配置器.33914.3.2几种不便使用默认配置器的情况.34214.3.3如何使用 factory_boy.34314.3.4消除“不便使用默认配置器的情况”.34514.4DjangoDebugToolbar .34614.5小结.353

34、第 15 章方便好用的 Python 模块 .35515.1轻松计算日期.35515.1.1日期计算的复杂性.35515.1.2导入 dateutil.35715.2简化模型的映射.35915.2.1模型映射的必要性.35915.2.2映射规则的结构化与重复利用.36015.2.3导入 bpmappers.36315.2.4与 Django 联动.36615.2.5编写 JSONAPI .36715.3图像处理.36915.3.1安装 Pillow .36915.3.2图像格式转换.371目录 xv15.3.3改变图像尺寸.37215.3.4剪裁图像 .37415.3.5对图像进行滤镜处理.3

35、7515.4数据加密.37715.4.1安装 PyCrypto.37715.4.2通用加密系统的加密及解密.37715.4.3公钥加密系统(RSA)的加密与解密.37815.5使用 Twitter 的 API.38215.5.1导入 tweepy .38215.5.2添加应用与获取用户密钥.38215.5.3获取访问令牌.38515.5.4调用 TwitterAPI .38515.5.5编写用 Twitter 认证的系统.38715.6使用 RESTAPI .39315.6.1REST 简介.39415.6.2导入 Requests.39415.6.3导入测试服务器.39415.6.4发送 G

36、ET 请求 .39615.6.5发送 POST 请求.39715.6.6发送 JSON 格式的 POST 请求 .39815.6.7使用 GET/POST 之外的 HTTP 方法 .39915.7小结.400附录 401附录 AVirtualBox 的设置 .402A.1安装 VirtualBox .402A.2新建虚拟机.403A.3备份虚拟机.404附录 BOS(Ubuntu)的设置 .407B.1安装 Ubuntu.407B.2SSH 的设置 .417B.3中文的设置.419B.4添加用户.419Python 开发入门在第 1 部分中,我们将搭建 Python 的基本环境,并进行简单的

37、Web 应用开发。然后根据已开发出的 Web 应用进一步优化环境,继续开发流程,直至其可以公开给一般用户使用。第 1 章Python 入门 2第 2 章开发 Web 应用24第 3 章Python 项目的结构与包的创建 48第 1 部分第 1章Python 入门各位在学习新技术或新编程语言时,是否对准备工作发过愁呢?往往学习还没有正式开始,就先在准备工作上迷失了方向。好不容易硬着头皮开始准备,却发现安装完一个软件之后又不知道该干什么了。最后自以为准备完毕兴冲冲地要开工时,才注意到应该装好的东西并没有正确安装。到头来,大把的时间花在了准备阶段上,再无心情去学习了。类似这种情况不知道各位遇到过没有

38、。搭建 Python 开发环境时要考虑 OS 与版本等诸多组合,所以这个过程很难保证一帆风顺。独立开发者,尤其是自学成才的开发者们,大多是以网页或书籍上的信息作为参考,然后用自己独有的方法进行搭建。但即便如此,其中有些共通点还是需要了解的。第 1 章中,我们将按部就班地了解对个人开发者来说共通的环境搭建顺序,让初学者也能顺利搭建环境。因此,我们将在第 1 章中对下列项目进行重点学习。其中有部分内容涉及虚拟机,所以我们将学习时使用的本地实体机的 OS 称为“主 OS” ,虚拟机的 OS 称为“客 OS” 。已经自己搭建好 Python 开发环境的读者可以跳过本章。 安装 Python 安装 Me

39、rcurial 关于编辑器以及开发辅助工具1.1安装 Python本节将带领各位安装一些便于在 Ubuntu 上使用 Python 进行开发的工具和包。NOTE本 书 以 Ubuntu14.04(Server 版 )作 为 Python 开 发 环 境 的 OS。 另 外, 我 们 使 用OracleVMVirtualBox 承载客 OS。搭建环境的相关内容收录在附录 A 以及附录 B 中,初学者请先参考附录再阅读以下内容。1.1安装 PythonNOTE本 书 以 Ubuntu14.04(Server 版 )作 为 Python 开 发 环 境 的 OS。 另 外, 我 们 使 用Oracl

40、eVMVirtualBox 承载客 OS。搭建环境的相关内容收录在附录 A 以及附录 B 中,初学者请先参考附录再阅读以下内容。第 1 章Python 入门 31.1.1安装 deb 包Ubuntu 可以用 apt-get 命令管理包。我们先来更新所有包,同时安装一些 Python 开发所需的包。LIST1.1deb 包的更新、升级$ sudo apt-get -y update$ sudo apt-get -y upgrade$ sudo apt-get -y install build-essential$ sudo apt-get -y install libsqlite3-dev$ s

41、udo 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 所示,我们在执行命令时

42、添加了 -y 选项。这样一来,在安装过程中被询问 Yes 或 No 时,计算机会自动帮我们选择 Yes。如果各位想亲自逐个确认,可以将 -y 选项删去。build-essential 包可以批量安装 Python 在 Ubuntu 上进行构建时所需的全部工具(gcc、make等) 。Python 本身在涉及某些包和模块时也必须有这些基本工具才能进行安装,因此建议各位先装好它们。接下来安装 Python 相关的包(LIST 1.2) 。LIST1.2安装 Python 相关的包# 安装 python-dev$ sudo apt-get -y install python-dev# 安装 pip$

43、 wget https:/bootstrap.pypa.io/get-pip.py$ sudo python get-pip.pypip 是管理 Python 第三方库的工具。虽然它也能通过 apt 命令进行安装,但那样安装的版本较低,因此我们使用 get-pip.py 来安装最新版。至此 Python 相关的包已经安装完毕。最后我们来查看一下 Ubuntu 默认自带的 Python 的版本。4 第 1 部分Python 开发入门LIST1.3查看 Python 的版本$ python -VPython 2.7.6输入 LIST 1.3 中的命令,我们便能够查看到当前安装的 Python 版本

44、。Ubuntu 默认安装的是Python 2.7.6。专栏ensurepipPython3.4 具有 ensurepip 模块,可在安装 Python 的同时捆绑安装 pip。这个模块是在Python2.7.9 之后加入的。支持 ensurepip 的 Python 可以直接使用 pip,不需要执行 get-pip.py来进行安装。另外,执行 python -m ensurepip -U 可以将 pip 更新到当前最新版本。ensurepiphttps:/docs.python.org/2.7/library/ensurepip.htmlPEP477:Backportensurepip (PE

45、P453) toPython2.7https:/www.python.org/dev/peps/pep-04771.1.2安装第三方包用 pip install 命令可以安装第三方开发的包。第三方包注册在 PyPI 上。这是一个用来共享 Python 包的版本库(Repository) ,任何人都可以将 Python 包上传到上面,同时也可以从上面自由下载想用的包。用 Python 开发软件时,常常要从 PyPI 安装所需的包。NOTEPyPI 的读音是 /papi: ai/。PyPI 的构造类似 Perl 中的 CPANA、Ruby 中的 RubyGemsB、PHP 中的 PEARC等。从

46、PyPI 安装包时需要用到 pip 命令。NOTE有关 pip 的详细内容我们将在第 3 章中详细了解。Ahttp:/www.cpan.org/Bhttp:/rubygems.org/Chttp:/ 具有 ensurepip 模块,可在安装 Python 的同时捆绑安装 pip。这个模块是在Python2.7.9 之后加入的。支持 ensurepip 的 Python 可以直接使用 pip,不需要执行 get-pip.py来进行安装。另外,执行 python -m ensurepip -U 可以将 pip 更新到当前最新版本。ensurepiphttps:/docs.python.org/2.

47、7/library/ensurepip.htmlPEP477:Backportensurepip (PEP453) toPython2.7https:/www.python.org/dev/peps/pep-0477NOTEPyPI 的读音是 /papi: ai/。PyPI 的构造类似 Perl 中的 CPANA、Ruby 中的 RubyGemsB、PHP 中的 PEARC等。NOTE有关 pip 的详细内容我们将在第 3 章中详细了解。第 1 章Python 入门 5这里简单了解一下 pip 的使用方法。首先我们来查看当前安装的 pip 的版本(LIST 1.4) 。LIST1.4查看 pi

48、p 的版本$ pip -versionpip 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 发行版、OSX、源码安装,则会安装在 site-packages 目录下。通过 pip 安装第三方包的方法如下。首先我们来安装常用的 virtualenv 包(LIST

49、1.5) 。LIST1.5通过 pip 安装包$ sudo pip install virtualenv-(中间省略)-Successfully installed virtualenvCleaning up.此后,包的安装基本都要用 pip 命令来完成。另外,上面例子中的 virtualenv 包安装在 /usr/local/lib/python2.7 目录下。NOTEpip 在安装一些需要构建的包时,会用 gcc 等编译器进行构建。在本书所用的 Ubuntu 下,我们已经通过 build-essential 安装了 gcc。Windows 下需要用 MicrosoftVisualC+Com

50、pilerforPython2.7 或者 MinGW 等进行安装。这些都是免费的。1.1.3virtualenv 的使用方法前面安装的 virtualenv 是用来搭建虚拟 Python 执行环境的。我们将其称为 virtualenv 环境。使用这个环境时,包不会安装到 /usr/local/lib/python2.7 下,而是安装到虚拟 virtualenv 环境中。由于我们在前面已经完成了安装,所以这里可以直接查看版本(LIST 1.6) 。LIST1.6查看 virtualenv 的版本$ virtualenv -version1.11.6NOTE上面例子中的 pip 安装在 dist-packages

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 文书范文 > 软件教程