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开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
浅谈Python程序的错误:变量未定义
Jun 02 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
彻底弄懂Python中的回调函数(callback)
Jun 25 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
Terran兵种对照表
2020/03/14 星际争霸
详细介绍PHP应用提速面面观
2006/10/09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
详解vue v-model
2020/08/31 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python基础知识点 初识Python.md
2019/05/14 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
python中的插入排序的简单用法
2021/01/19 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
关于安全演讲稿
2014/05/09 职场文书
垃圾桶标语
2014/06/24 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
小学中队活动总结
2015/05/11 职场文书
2016年教师节慰问信
2015/12/01 职场文书
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android
HttpClient实现表单提交上传文件
2022/08/14 Java/Android