Python安装第三方库攻略(pip和Anaconda)


Posted in Python onOctober 15, 2020

常用的python第三方库安装工具大概有三种:

1、pip (推荐)
2、easy_install
3、setup.py

常见的安装包格式:

1、whl (推荐,一种二进制的)
2、tar.gz
3、zip
4、egg(第一个主流打包格式)
whl和egg文件可以直接将后缀名改为zip,作为zip解压,但在有网的模式下,whl不必解压,用pip的安装命令即可

setup.py

setup.py常用于源码安装,由于pypi官网下载包非常慢,因此有人会选择下载后安装,也有人会去GitHub上下载源码来安装,setup.py常被用与后者。

一般GitHub上的源码大多为zip、tar.gz、tar.zip、 tar.bz2这类压缩文件,而它们往往自带setup.py文件。

安装:

1、下载zip并解压;
2、打开cmd,进入解压后的路径;
3、依次执行以下代码

命令如下:

python setup.py build
python setup.py install

Windows的安装包存放的路径为:python安装路径下的\Lib\site-packages。

Linux的路径应该为: /usr/lib/python2.7/site-packages。 (路径不一定,视情况而定,有的可能在/usr/local/lib)

缺点:

但是这种安装方法有一种非常大的毛病,就是使用该方法安装的包,无法通过pip uninstall卸载干净。

需要手动到/usr/bin/python2.7/site-package(其中python处为对应的Python版本)目录下删除。对于类UNIX系统来说,64位机更麻烦的是,在/usr目录下分为lib和lib64,这两个目录下都会有。

网上有卸载方法,但我试过不太奏效:

卸载

记录安装后文件的路径
python setup.py install --record files.txt

删除这些文件 
cat files.txt | xargs rm -rf

一般情况下其实不建议使用这种,pip其实也是可以直接安装压缩包的,后面会讲。

easy_install

实际上,在Python中安装第三方模块,是通过setuptools这个工具完成的。而easy_install和pip是封装了setuptools的两个包管理工具。

我们要使用easy_install,首先需要setuptools,当然,现在的版本里都自带了,python3.6以后的略微有点不一样,后面会讲。

但是还是可以提一下:

1、打开官网 http://pypi.python.org/pypi/setuptools ,目前最新版的只有whl和zip两种格式(以前是有exe的,现在似乎没有了,但我感觉现在更方便一点)。

但是whl前提是要用pip安装,而pip有的时候,我们可能需要使用easy_install才能安装,有pip我们也不怎么用easy_install了,所以我们只能下载zip。

2、下载后解压,会发现里面有easy_install.py和setup.py,可以直接使用。
如果是exe,安装后双击 ez_setup.py安装,或在cmd执行命令:

python easy_install.py

安装好easy_install之后就可以用来安装包了,但是建议将easy_install所在路径加入环境变量PATH,否则每次安装包都需要先进入该路径。

Windows的easy_install路径为:Python下的Scripts目录
Linux的路径应该为: /usr/local/bin。 (路径不一定,视情况而定)

easy_install的使用方法,如安装pip,直接在后面加上包名即可:

# 指定包名
 easy_install pip
 
 # 指定网址
 easy_install -f *.html pip
 
 # 安装tar/egg
 easy_install package.tar/egg
 
 # 安装zip,先解压,然后进入
 easy_install .

卸载

easy_install -m pip

升级

easy_install --upgrade pip

使用教程:
http://peak.telecommunity.com/DevCenter/EasyInstall#downloading-and-installing-a-package

pip

使用

# 安装
pip install package

# 卸载
pip uninstall package

# 查看所安装的包
pip list

# 搜索包
pip search package

# 更新
pip install -U package

# 重定向输出项目使用的库到 requirements.txt文件内
pip freeze > requirements.txt

#在其他环境上安装项目的依赖
pip install -r requirements.txt

安装tar.gz和zip使用pip是最简单的,不需要解压,前两种还需要解压。

批量安装

有的时候你会发现在没有网络的时候,你想要安装wheel文件,直接pip会出错,这里有一种办法,并且可以批量,就是利用requirements.txt文件。但是,这之前我们还要知道,我们之所以安装wheel文件会失败,是因为本机的python不支持下载的whl文件。

1、我们将所有包下好,包括whl、tar.gz等。
2、然后将包的版本写入requirements.txt,并将它们放在一起。
3、可以直接执行命令,也可以将该命令写入脚本。

命令如下:

pip install --use-wheel --no-index --find-links=./ -r requirements.txt

批量卸载

pip uninstall -y -r requirements.txt

其中-y代表卸载时不询问是否删除,即yes的意思,可以省略,但在脚本里的时候还是加上。

wheel

1、wheel 包的命名格式

{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl

前两个分别代表包名和版本,前面查看wheel版本输出的三元素元组分别代表{python tag}-{abi tag}-{platform tag}。

python-tag —— python实现,主要分为五种:

  • py - 无实现特定的拓展
  • cp - CPython,也就是通常使用的 Python 实现
  • ip - IronPython,跑在 Windows CLI 平台上的 Python 实现
  • pp - PyPy,带 JIT 的 Python 实现
  • jy - Jython,跑在 JVM 上的 Python 实现

如request的whl名字里的py2和py3分别代表支持py2.x和py3.x,两个同时存在则代表两个版本都支持,以“.”分隔。

abi tag

说实话,我没太看懂这是个什么东西,只大概知道分为以下几种:

  1. with-pydebug (flag: d ) ——看起来像是用于debug的
  2. with-pymalloc (flag: m ) —— 一个专门的对象分配器
  3. with-wide-unicode (flag: u ) —— 默认开启的
  4. none —— 不区分

如果打包时没办法判断 abi 类型,生成的 abi tag 会是 none。而如果 Python 包是不依赖特定的 abi 的纯 Python 实现,生成的 abi tag 也是 none。

大部分我们下载的的是类似mu结尾的,如cp27mu。

platform tag —— 系统

  • win32 —— Windows32位
  • win_amd64 —— Windows64位
  • linux_i386 —— Linux32位
  • linux_x86_64 —— Linux64位
  • any —— 任意

当然,远不止这些,我曾经装过grpcio这个库,在官网里找到它发现五花八门,当时不知道要下哪一个,后来才找到那个查看版本的命令。

Python安装第三方库攻略(pip和Anaconda)

可以看到,就截图内的就有涉及到大概八种不同的系统及版本,根据命令查看whl版本,发现支持manylinux1_x86_84版本,原因是我当时用的是centos7,并且安装的时候是安装的最小(Mini)的形式,因此我下了manylinux1_x86_84的其中一个。

2、python环境支持哪种wheel文件

pip10以下的版本查看:

>>> import pip
>>> print(pip.pep425tags.get_supported())

pip10以上的版本查看:

>>> import pip._internal; 
>>> print(pip._internal.pep425tags.get_supported())

可以看到如图:

Python安装第三方库攻略(pip和Anaconda)

可以看到,这是一个由多组元组组成的列表,这里面的三个东西有没有感觉很眼熟,我们再看wheel文件的名称组成,例如requests:

requests-2.22.0-py2.py3-none-any.whl

再如

grpcio-1.21.1-cp27-cp27m-manylinux1_x86_64.whl

当然,后者在Windows上的Python里执行是不可能看到的。

下载源

国内pypi官网下载源有时候会比较慢,我们可以指定源

pip install package -i http://pypi.douban.com/simple --trusted-host pypi.douban.compipy

国内镜像目前有:

  • 豆瓣 http://pypi.douban.com/simple/
  • 阿里云 http://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  • 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
  • 华中理工大学 http://pypi.hustunique.com/
  • 山东理工大学 http://pypi.sdutlinux.org/

第三方库下载地址

1、https://pypi.org (官方)
2、https://www.lfd.uci.edu/~gohlke/pythonlibs/(很多官网没有的这里有)

python3.6前后的版本pip安装方式的不同

Python3.6和之前的版本(包括2.x和3.6之前的3.x)有一个很大的区别,安装完之后Scripts目录为空,当我们想执行更新pip时出错:

python -m pip install -U setuptools

报错:

No module named pip

解决办法:

python -m ensurepip

离线安装前查看某个指定的包的所有依赖项

我们有的时候开发环境分内外网,但是又不得不安装一些第三方库,需要去外网下载好wheel拷到内网,而这些第三方库往往依赖于其他包。如果你在内网试,每次一个没有又要去外网重新下了拷进来,不胜其烦。

而conda有一个非常棒的功能,就是可以查看某个python版本的某个库的所有依赖项及其对应的版本,如下,指定查看3.5的某个包的所有依赖,较老版本的命令是这样的:

conda info package_name python=3.5

新版本的命令(可离线查看),没研究出来怎么指定python版本:

conda search package_name --info [--offline]

其实pip也有,但只能显示相关依赖包,但不能显示具体对应的版本:

conda search package_name --info [--offline]

可查看:https://cloud.tencent.com/developer/ask/145565

conda

我16年接触python的时候,学爬虫被安装第三方库折腾的差点放弃,尤其是Scrapy框架,后来一阵摸索好不容易发现了Anaconda这么个好东西。

Anaconda是个集成环境,里面有大量的常用第三方库以及科学计算相关的包,感觉起来装任何包都很轻易,没有再为包的事情烦心过,里面的命令是conda,和pip类似,但不仅pip,还有虚拟环境的作用。命令也类似,只要把pip替换为conda即可,但也可以使用pip命令。

如果想将py2和py3的Anaconda装在一起,只要把其中一个安装在另一个已经装好的envs路径下即可。

conda具体命令查看:
https://conda.io/projects/conda/en/latest/commands.html#

virtualenv

对于安装包,如果觉得怎么都安装不上,使用虚拟环境也是个很不错的选择,

# 安装(python2)
pip install virtualenv

# 创建虚拟环境,需要预先创建一个目录
virtualenv venv_name

# Windows激活虚拟环境
#1、进入虚拟环境所在目录下的Scripts目录
cd venv_name/Scripts

# 2、激活
activate

# 3、退出,linux同
deactivate

# linux进入并激活虚拟环境目录
source venv_name/bin/activate

参考文档

1、https://pip.pypa.io/en/stable/reference/
2、https://www.cnblogs.com/dtest/p/4507980.html
3、https://bu-choreography.iteye.com/blog/1113059
4、https://www.cnblogs.com/amengduo/p/9586354.html(安装史)
5、https://www.python.org/dev/peps/pep-0425/
6、https://www.python.org/dev/peps/pep-3149/
7、https://segmentfault.com/a/1190000007591736
8、https://docs.python.org/2.3/whatsnew/section-pymalloc.html

到此这篇关于Python安装第三方库攻略(pip和Anaconda)的文章就介绍到这了,更多相关Python安装第三方库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python多线程操作实例
Nov 21 Python
python分析nignx访问日志脚本分享
Feb 26 Python
python生成随机mac地址的方法
Mar 16 Python
分享Python字符串关键点
Dec 13 Python
python爬虫的工作原理
Mar 05 Python
python中返回矩阵的行列方法
Apr 04 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Python生成词云的实现代码
Jan 14 Python
python等待10秒执行下一命令的方法
Jul 19 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 Python
Python return语句如何实现结果返回调用
Oct 15 #Python
python 进程池pool使用详解
Oct 15 #Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 #Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 #Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 #Python
matplotlib教程——强大的python作图工具库
Oct 15 #Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 #Python
You might like
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
php类自动加载器实现方法
2015/07/28 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
JavaScript 基本概念
2015/01/20 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
python实现网页链接提取的方法分享
2014/02/25 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
党员批评与自我批评
2014/02/12 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
特种设备安全管理制度
2015/08/06 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
晶体管单管来复再生式收音机
2021/04/22 无线电
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android