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中文编码那些事
Jun 25 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
详解Python循环作用域与闭包
Mar 21 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
Python代码太长换行的实现
Jul 05 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
Python实战之疫苗研发情况可视化
May 18 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
php miniBB中文乱码问题解决方法
2008/11/25 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php远程下载类分享
2016/04/13 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
php 修改密码实现代码
2017/05/24 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
Python之re操作方法(详解)
2017/06/14 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
python xlsxwriter模块的使用
2020/12/24 Python
户外拓展活动方案
2014/02/11 职场文书
个人汇报材料范文
2014/12/30 职场文书
社区文明倡议书
2015/04/28 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP