我们都知道python有海量的第三方库或者说模块,这些库针对不同的应用,发挥不同的作用。我们在实际的项目中,或多或少的都要使用到第三方库,那么如何将他人的库加入到自己的项目中内呢?

打个电话?大哥你好,想用下你那个库,麻烦给邮箱发个源码呗!显然这是个笑话。Python官方的PyPi仓库为我们提供了一个统一的代码托管仓库,所有的第三方库,甚至你自己写的开源模块,都可以发布到这里,让全世界的人分享下载。当然,除了Python官方的仓库,也有一些其他公司提供的仓库,还有一些私有的或针对内部的仓库。

有了统一的管理仓库,那么我们是不是就可以从上面下载源码进行安装了?原则上是的,只不过由于使用源码安装比较繁琐,容易出错,也不够简便,因此出现了wheel文件格式,类似zip或rar文件,并提供专用的安装工具,帮助我们更快更简便的安装。pip就是这个工具!它能帮助我们自动从仓库上下载并安装第三方库,同时将该库所依赖的而本地没有安装的库一并安装。

由于历史的原因,Python有两个著名的包管理工具easy_install和pip。在Python2.7的安装包中,easy_install是默认安装的,而pip需要我们手动安装。随着Python版本的提高,easy_install已经逐渐被淘汰,但是一些比较老的第三方库,在现在仍然只能通过easy_install进行安装。目前,pip已经成为主流的安装工具,自Python2 >=2.7.9或者Python3.4以后默认都安装有pip。

就如同Python有2、2.7、3、3.6一样,pip也有pip、pip2、pip3之分。pip是从属于Python的,对应的pip负责给对应的Python安装第三方模块。我们不要关心pip后面跟的数字,核心的问题是这个pip命令对应的是哪个Python解释器,一个萝卜一个坑,想要为哪个Python解释器安装第三方库,就要调用它名下对应的pip。

那么如何确定哪个pip是哪个Python的呢?

cmd环境中,输入pip -V(大写V):

注意提示中的Python路径和版本!搞清楚了这点,你就不会搞错了pip。

安装pip

那么,如果很不巧,你的Python版本下恰好没有pip这个工具,怎么办呢?解决办法很多!

  1. 使用easy_install安装: 各种进入到easy_install脚本的目录下,然后运行easy_inatall pip
  2. 使用get-pip.py安装: 在下面的url下载get-pip.py脚本 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 然后运行:python get-pip.py 这个脚本会同时安装setuptools和wheel工具。
  3. 在linux下使用包管理工具安装pip: 例如,ubuntu下:sudo apt-get install python-pip。Fedora系下:sudo yum install python-pip
  4. 在windows下安装pip: 在C:\python27\scirpts下运行easy_install pip进行安装。

刚安装完毕的pip可能需要先升级一下自身: 在Linux或masOS中:pip install -U pip 在windows中:python -m pip install -U pip

pip的基础使用

在命令行下,输入pip,回车可以看到帮助说明:

1. 普通安装

再次强调,使用pip前请务必确认其所对应的Python解释器必须是你想要的那个!

以安装pillow模块为例。输入pip install pillow,安装过程如下图:

2. 指定版本安装

安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号。 pip install 'Markdown<2.0' pip install 'Markdown>2.0,<2.0.3

3. 卸载已安装的库

pip uninstall pillow

4. 列出已经安装的库

pip list

5. 将已经安装的库列表保存到文本文件中

pip freeze > requirements.txt

这个功能非常常用、好用!经常被用作项目环境依赖文件。

6. 根据依赖文件批量安装库

pip install -r requirements.txt

使用上面的txt文件,批量安装第三方库。

7. 使用wheel文件安装

除了使用上面的方式联网进行安装外,还可以将安装包也就是wheel格式的文件,下载到本地,然后使用pip进行安装。比如我在PYPI上提前下载的pillow库的wheel文件,后缀名为whl。

可以使用pip install pillow-4.2xxxxxxx.whl的方式离线进行安装

pip源的选择

很多时候,比如网络不给力,连接超时、防火墙阻挡等等各种原因,我们可能无法从Python官方的PyPi仓库进行pip安装,这时候可以选择国内的第三方源,推荐使用豆瓣源,速度不错。

使用方法:

pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com  pillow

需要注意的是,除了最后的pillow用你所期望的库名替代外,前面的参数都是固定写法,包括参数顺序。

更多pip相关资料可参考该文Python 包管理工具解惑

2.1pip的安装和使用的更多相关文章

  1. Python - Windows系统下安装使用virtualenv

    1 - virtualenv https://pypi.python.org/pypi/virtualenv/ https://github.com/pypa/virtualenv 在实际开发测试中, ...

  2. ubuntu中pip安装redis-py及pip的使用

    安装redis-py的前提是已经将redis成功安装,redis安装过程请看博文 ubuntu14安装redis 1.安装pip sudo apt-get install python-pip 2.使 ...

  3. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  4. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  5. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  6. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  7. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  8. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  9. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

随机推荐

  1. 零基础学Java(1)初识Java程序

    前言 就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!! Java的好处(针对测试工程师) 面试加分->涨薪 大多数公司服务端用的都是Java, ...

  2. JAVA语言的跨平台性和JDK,JRE与JVM

    Java虚拟机--JVM ~JVM:java虚拟机简称JVM是运行所有java程序的假想计算机,是java程序的运行环境,是java最具有吸引力的特性之一,我们编写的java代码,都运行在JVM之上 ...

  3. 自动登录token过期问题

    之前遇到的一个也不算棘手的问题,自动登录本地存储了token却无法登录到主页. 先说一下我自动登录的思路:在用户登录成功时,将 token 存入 cookie :当用户下次来到本网站,读取 cooki ...

  4. VMare 设置固定IP和网段

    切换目录 cd /etc/sysconfig/network-scripts ls查看当前目录下的东西 找到ipcfg- 开头的,而且不是iocfg-lo,而上图就是那个ifcfg-ens33. 则进 ...

  5. CMU15445 (Fall 2019) 之 Project#4 - Logging & Recovery 详解

    前言 这是 Fall 2019 的最后一个实验,要求我们实现预写式日志.系统恢复和存档点功能,这三个功能分别对应三个类 LogManager.LogRecovery 和 CheckpointManag ...

  6. 03 MySQL_表相关的SQL

    表相关的SQL 什么是表: 表是数据库中保存数据的单位 数据库表的引擎: innodb:支持数据库的复杂操作,包括外键.事务等; myisam:只支持数据库的增删改查操作: 1. 创建表 格式: cr ...

  7. js 设置滚动条位置为底部

     if (document.getElementById("")) {             document.getElementById("").scro ...

  8. IO概述(概念&分类)和字节输入流+OUTputStream类&FileOutPutStream类介绍

    IO概述 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了保存,可能文件就白白编辑了.当你的电脑上插入一个U盘,可以吧一个视频,拷贝到你的电脑硬盘里,那么数据都是在哪些设备上的 ...

  9. 8000字讲透OBSA原理与应用实践

    摘要:OBSA项目是围绕OBS建立的大数据和AI生态,其在不断的发展和完善中,目前有如下子项目:hadoop-obs项目和flink-obs项目. 文章作者:存储服务产品部开发者支持团队 OBS存储服 ...

  10. Rider调试ASP.NET Core时报thread not gc-safe的解决方法

      新建了一个ASP.NET Core 5.0的Web API项目,当使用断点调试Host.CreateDefaultBuilder(args)时,进入该函数后查看中间变量的值,报错Evaluatio ...