- Preface 前言
- 第1章 引论
- 第2章 编程惯用法
- 第3章 基础语法
- 建议19:有节制地使用 from…import 语句
- 建议20:优先使用 absolute import 来导入模块
- 建议21:i+=1 不等于 ++i
- 建议22:使用 with 自动关闭资源
- 建议23:使用 else 子句简化循环(异常处理)
- 建议24:遵循异常处理的几点基本原则
- 建议25:避免 finally 中可能发生的陷阱
- 建议26:深入理解 None 正确判断对象是否为空
- 建议27:连接字符串应优先使用 join 而不是 +
- 建议28:格式化字符串时尽量使用 .format 方式而不是 %
- 建议29:区别对待可变对象和不可变对象
- 建议30:[]、() 和 {}:一致的容器初始化形式
- 建议31:记住函数传参既不是传值也不是传引用
- 建议32:警惕默认参数潜在的问题
- 建议33:慎用变长参数
- 建议34:深入理解 str() 和 repr() 的区别
- 建议35:分清 staticmethod 和 classmethod 的适用场景
- 第4章 库
- 建议36:掌握字符串的基本用法
- 建议37:按需选择 sort() 或者 sorted()
- 建议38:使用 copy 模块深拷贝对象
- 建议39:使用 Counter 进行计数统计
- 建议40:深入掌握 ConfigParser
- 建议41:使用 argparse 处理命令行参数
- 建议42:使用 pandas 处理大型 CSV 文件
- 建议43:一般情况使用 ElementTree 解析 XML
- 建议44:理解模块 pickle 优劣
- 建议45:序列化的另一个不错的选择 JSON
- 建议46:使用 traceback 获取栈信息
- 建议47:使用 logging 记录日志信息
- 建议48:使用 threading 模块编写多线程程序
- 建议49:使用 Queue 使多线程编程更安全
- 第5章 设计模式
- 第6章 内部机制
- 建议54:理解 built-in objects
- 建议55:init() 不是构造方法
- 建议56:理解名字查找机制
- 建议57:为什么需要 self 参数
- 建议58:理解 MRO 与多继承
- 建议59:理解描述符机制
- 建议60:区别 getattr() 和 getattribute() 方法
- 建议61:使用更为安全的 property
- 建议62:掌握 metaclass
- 建议63:熟悉 Python 对象协议
- 建议64:利用操作符重载实现中缀语法
- 建议65:熟悉 Python 的迭代器协议
- 建议66:熟悉 Python 的生成器
- 建议67:基于生成器的协程及 greenlet
- 建议68:理解 GIL 的局限性
- 建议69:对象的管理与垃圾回收
- 第7章 使用工具辅助项目开发
- 第8章 性能剖析与优化
建议70:从 PyPI 安装包
PyPI全称Python Package Index,直译过来就是“Python包索引”,它是Python编程语言的软件仓库,类似Perl的CPAN或Ruby的Gems,目前已经有将近35?000个软件和库(统称为包)提交到上面。既然名字中带有“索引”一词,顾名思义,可以通过包的名字查找、下载、安装PyPI上的包。对于包的作者,在PyPI上注册账号后,还可以登记、更新、上传包等。
注意
PyPI有良好的镜像机制,可以方便地在全球各地架设自有镜像,目前可用的几个镜像列出在PyPI Mirrors页面上,而各个镜像的同步情况可以在专门的网站上看到。因为访问外国网站普遍比较慢,为了方便众多的Python程序员,豆瓣网架设了一个镜像,地址是http://pypi.douban.com,访问速度很快,推荐使用(具体的使用方法见easy_install/pip的--index参数)。
某日,你在邮件列表里看到有人推荐requests,写得非常煽情,让你相当有兴趣想要试一试这个号称“更适合给人用”的HTTP客户端库,那么可以打开你的浏览器,并导航到PyPI,在右上角输入reuqests然后单击搜索按钮,如图7-1所示。
图7-1 PyPI首页
接下来浏览器将会显示搜索结果列表,从中找到名为requests的项目,打开以后页面的上半部分是requests的简要文档,往下拉可以看到它的下载链接,单击后下载保存,然后进入下载目录,执行tar解压缩。
:~# tar zxvf requests-1.2.3.tar.gz
然后进入requests-1.2.3目录安装。
:~# cd requests-1.2.3 :~/requests-1.2.3# python setup.py install
Python setup.py install命令将把requests库安装到Python的库目录中。
注意
因为包在PyPI上的主页的URL都是https://pypi.python.org/pypi/{package}的形式,所以在知道包名的情况下,熟手一般并不使用搜索功能,而是直接手动输入URL。
显然,手动安装包实在是太麻烦了,查找、下载、解压、安装整个流程完全可以自动化。爱好偷懒的Pythonista自然编写好了工具供大家使用,其中setuptools尤其值得优先推荐给大家。在Ubuntu Linux上,可以使用apt安装这个包。
sudo aptitude install python-setuptools
其他操作系统大同小异,运行其相应的包管理软件就可安装。但如果你使用MS Windows,则需要去它的主页(https://pypi.python.org/pypi/setuptools)下载,然后手动安装。
操作系统对应的软件仓库中的setuptools版本通常比较低,所以安装完成以后,最好执行以下命令将其更新到最新版本:
easy_install -U setuptools
setuptools是来自PEAK(Python Enterprise Application Kit,一个致力于提供Python开发企业级应用工具包的项目),由一组发布工具组成,方便程序员下载、构建、安装、升级和卸载Python包,因为它可以自动处理包的依赖关系,所以深受大家的喜爱。
注意
因为PEAK最近几年发展停滞,累及setuptools也有好几年没有更新。所以有些程序员重新创建了一个分支项目,称为distribute,受到了大家的喜爱。在很长一段时间里,运行easy_install -U setuptools更新的时候,安装的其实是distribute。但是,在2013年年初,distribute合并到setuptools,回归主分支,并发布了setuptools 0.7版本。随后几个月频繁发布大版本,至2013年9月,最新的版本已经是1.1.5版,而distribute项目也就不再维护了。
安装setuptools之后,就可以运行easy_install命令了。
# easy_install requests Searching for requests Reading https://pypi.python.org/simple/requests/ Best match: requests 1.2.3 Downloading https://pypi.python.org/packages/source/r/requests/requests- 1.2.3.tar.gz#md5=adbd3f18445f7fe5e77f65c502e264fb Processing requests-1.2.3.tar.gz Writing /tmp/easy_install-vwjYKV/requests-1.2.3/setup.cfg Running requests-1.2.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-vwjYKV/requests-1.2.3/egg-dist-tmp-MeMFX1 Adding requests 1.2.3 to easy-install.pth file Installed /usr/local/lib/python2.6/dist-packages/requests-1.2.3-py2.6.egg Processing dependencies for requests Finished processing dependencies for requests
这就是使用setuptools安装requests的过程,可以从输出中看到easy_install能够查找到最新版本的包,然后进行下载、安装,比手动安装要简单、方便得多。
注意
setuptools的功能非常丰富,包括对Python包的构建、测试、发布等都支持得很好,这些功能将在后续的几节中讲述。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论