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 相关文章推荐
python3生成随机数实例
Oct 20 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
使用python实现ANN
Dec 20 Python
Python之pandas读写文件乱码的解决方法
Apr 20 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
Python Flask框架扩展操作示例
May 03 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
python 3.8.3 安装配置图文教程
May 21 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
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
浅析php学习的路线图
2013/07/10 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
jquery map方法使用示例
2014/04/23 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
原生JS实现小小的音乐播放器
2017/10/16 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python读写csv文件方法详细总结
2019/07/05 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
临床医师专业个人自我评价
2014/01/08 职场文书
班风口号
2014/06/18 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
JavaScript实现简单图片切换
2021/04/29 Javascript
Python语言规范之Pylint的详细用法
2021/06/24 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
mysql sql常用语句大全
2022/06/21 MySQL