如何安装 Python 的第三方模块

正所谓“人生苦短,我用 Python”。Python 的一大优势就是有丰富且易用的第三方模块,省去了大量重复造轮子的时间,节约了众多开发者的生命。对于已经熟悉 Python 开发的人来说,安装第三方模块是家常便饭的事情。但如果是刚入门的新手,很可能会被折腾一番。所以我来简单地科普一下,如何安装 Python 的第三方模块。

(本文基于 Python 2.7 版本)

安装通常有两种方式:通过包管理器、直接下载源码安装

1. 包管理器

很多系统和语言都提供了包管理器。你可以把“包管理器”想象成一个类似应用商店的工具。Python 的包管理器里就是各种第三方模块。有了它,不用998,也不用98,只需要一条命令,就可以自动帮你下载并安装。

Python 常用的包管理器是 pipeasy_install。他们会从一个叫做 PyPI 的源里搜索你要的模块,找到后自动下载安装。PyPI 是 Python 官方的第三方模块仓库,供所有开发者下载或上传代码。

如果你用的是 Mac 或者 Linux,那么同 Python 一样,你的系统里应该自带了 pip。而如果你是 Windows,那么在安装 Python 的时候,勾选 pip 和 Add python.exe to Path,就会帮你同时安装好 pip 并设置好环境变量中的路径。如果无法使用 pip,确认 Python 安装目录下的 Scripts 子目录中有 pip,并且这个子目录的路径被加在了环境变量 Path 中。如果没有 pip,则要通过下载 setuptools 安装,或建议直接重新安装一遍 Python。

以 IPython 为例,通过 pip 命令进行安装,只需要在命令行输入:

pip install ipython

如果一切正常,网络不抽风,只要稍微等待,就可以看到下载进度,自动安装完就可使用。如果 Mac/Linux 下提示 Permission denied 之类的权限问题,在命令前加上 sudo。

IPython 是一个增强版的 Python shell,在命令行输入 ipython 就可以打开使用。比默认运行 python 进入的那个更好使,在里面调试代码会很方便。不过 windows 的话,还要再用 pip 装一个 pyreadline 的模块,才能使用 IPython 的 tab 键自动补全功能。(用 Windows 开发就是事多)

如果你不是很明确要下载的模块名,也可以进行搜索,比如:

pip search ipython

再来看 easy_install。安装 easy_install 的一种简单方法是去网上下载一个 ez_setup.py 的脚本文件。

http://peak.telecommunity.com/dist/ez_setup.py

下载之后运行它:

python ez_setup.py

然后 easy_install 就被安装好了。同样,需确认 Scripts 在环境变量 PATH 里。

使用方法和 pip 一样简单:

easy_install ipython

一般来说,pip 和 easy_install 就可以搞定绝大多数的模块安装了。万一不行,还可以尝试下面的另一种方式。

2. 源码安装

几乎所有第三方模块都可以在 PyPI 或 github 上找到源码,都会提供 zip、tar 等格式的压缩包。把代码压缩包下载到本地并解压,应该会看到一个 setup.py 的文件。在命令行进入其所在目录,执行:

python setup.py install

就会安装这个第三方模块。最终效果和用包管理器是一样的。

无论哪种方法,都会将第三方模块代码安装至 Python 的路径下,根据系统不同,位置有所区别,大致都是叫做 site-packages 或 dist-packages。所以对于一些没有其他依赖,不需要编译其他语言的纯 Python 代码包,也可以直接手动将源码复制到 site-packages 或 dist-packages 目录下。只要路径正确,就可以在你的代码里引入这些模块。

友情提醒一些坑:

  • 安装第三方模块前,请确认它所支持的版本,是不是包含你所使用的 Python 版本。有些模块对应 Python 2 和 3 需要下载不同的版本。
  • 少数复杂的包可能无法直接一条命令安装成功,特殊情况特殊对待,搜索引擎会给你指引。
  • 如果你的电脑上装有多个版本的 Python,使用 pip 很可能会造成混乱。对于这个问题,virtualenv 是一个很好的解决方案,下次会专门来讲一讲。

有一个叫做 Awesome Python 的项目,列出了各类优秀的、实用的、有意思的 Python 库,点击文章下方的“阅读原文”可查看。

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2016-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶架构师

闪电侠:2018.3 IntelliJ IDEA 重大更新:支持CPU火焰图,新增酷炫主题

就在上周,JetBrain 公司发布了 Java 集成开发环境 IntelliJ IDEA 最新版本 2018.3Beta,本篇文章,我将根据官方博客以及自己的...

1151
来自专栏编程

从w命令开始,系统状态命令哪个最强大?哪个你最熟悉?

最快的时间内,通过不同命令对Linux系统状态的把控,也是运维的基本功。今天一起来汇总一下,看看都有哪些。 1 使用w查看系统负载 相信所有的linux管理员最...

1998
来自专栏软件

GitHub快速入门图文全面详解

?tub程序员必须要会 作者:AWeiLoveAndroid 博客:https://www.jianshu.com/u/f408bdadacce 文章目录 入门...

2028
来自专栏程序员互动联盟

浏览器开发系列第三篇:chromium代码目录结构

上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流。 另外...

5407
来自专栏Python中文社区

使用scrapy,redis,mongodb实现的一个分布式网络爬虫

这个工程是对垂直搜索引擎中分布式网络爬虫的探索实现,它包含一个针对http://www.woaidu.org/ 网站的spider, 将其网站的...

4079
来自专栏非著名程序员

可能是 Android 平台上最快的图片压缩框架

这款图片压缩框架,是 ghnor 作者在 Luban 的算法策略上,丰富了外围的 api,提供更多的可配参数,多线程压缩和不同细粒度的任务控制。 它不仅可以同步...

23210
来自专栏Youngxj

[教程]超简单搭建WEB服务器

1K5
来自专栏云计算

Kubernetes的服务网格(第4部分):通过流量切换持续部署

除了服务发现,重要指标和TLS之外,linkerd还具有强大的路由语言,称为dtabs,可以用来改变请求的方式 - 甚至是单个请求 - 流经应用程序拓扑。在本文...

4317
来自专栏区块链

XSS攻击入门

反射性XSS XSS又叫CSS(Cross Site Script)跨站脚本攻击。它指的是恶意攻击者往Web页面TM入恶意代码,当用户浏览该页之时。嵌入其中We...

2695
来自专栏zhisheng

听说你要做网站

现代 Web 后端技术超入门 引言 现在房价这么高,作为一个程序员只能靠做个网站看能不能卖出 100 万这样搏一手了。这里尝试介绍一下现代 Web 后端并解释一...

3698

扫码关注云+社区