Python第三方库的安装方法总结


Posted in Python onJune 06, 2016

Python 是一门优雅的语言,简洁的语法,强大的功能。当然丰富的第三方库,更能加速开发。那么问题来了,如何安装这些第三方库(包)呢?

安装第三方库的方式其实不多。下面就介绍一些技巧。

源码安装
很多第三方库都是开源的,几乎都可以在github 或者 pypi上找到源码。找到源码格式大概都是 zip 、 tar.zip、 tar.bz2格式的压缩包。解压这些包,进入解压好的文件夹,通常会看见一个 setup.py 的文件。打开命令行,进入该文件夹。运行

python setup.py install

这个命令,就能把这个第三库安装到系统里,也就是你的 Python 路径,windows大概是在 C:\Python2.7\Lib\site-packages。
Linux会在 /usr/local/lib/python2.7/dist-packages。
Mac 应该在 /Library/Python/2.7/site-packages。如果是在 virtulenv环境下安装,这个包就被安装在所建立的虚拟环境下的 site-packages/目录下。想要卸载这些库也很简单,进入 site-packages,直接删掉库文件就 OK 啦。当然,这些安装可能有一点麻烦,需要下载,解压,再运行安装,卸载也不是很方便。有没有一种工具,可以帮外面管理这些库呢?

包管理器 (pip 和 easy_install)
现在很多编程语言,都带有包管理器,例如 Ruby 的 gem,nodejs的npm。Python当然也不例外,拥有大名鼎鼎的 pip和 easy_install。

前面说到的pypi就是一些 python第三库所在的源,使用 pip 或者 easy_install 安装模块,会搜索这个源,然后自动下载安装。比如我们需要安装 flask 框架具体命令如下:

pip install flask

或者

easy_install flask

简单吧,一个简单的命令就搞定。卸载也很方便,例如我们需要卸载flask

pip uninstall flask

查看所安装的包,包括系统自带的和手动安装的

pip list

还可以搜索包

pip search flask

还可以重定向输出项目使用的库。

pip freeze > requirements.txt

这样就会把该环境下的第三方库重定向到 requirements.txt文件内,如果给别人安装项目的依赖,只需要运行:

pip install -r requirements.txt

很方便吧。当然,有时候,我们的网络并不是那么顺畅,pip是在线安装的,可不可以离线呢?当然可以啦,pip install 的第一步,就是在 pypi 上寻找包,然后下载到本地。如果网络不好,可以先建一个本地的仓库,把常用的包离线下载。比如可以下载 flask 的源码

pip intall flask-master.zip

同样也可以安装。

虚拟环境相关安装
当然,上面介绍的,其实也是很普通很常见的方式,也算不上什么技巧。下面介绍的,则是一些需要了解原理和解决非常规问题的技巧。

使用Python,我们会喜欢用 virtualenv建立虚拟环境,例如建立一个 venv的虚拟环境。我们只需要 source进去就可以使用pip安装了。可是有时候,即使在虚拟环境下,使用了sudo的前缀(windows忽略),那么安装的库不是在虚拟环境,而是被安装到系统下的site-package 目录下了。

windows的用户可能会很开心,不需要注意这个问题。当然 windows 也同样有着自己的问题。在 windows上安装python,一般是编译好的二进制包exe可执行文件。通常有 32位和64位的python。对于第三方库,本来32和64不会有太大的差别。但是对于一些C写的python库,如mysqldb,PIL, pillow,会发现使用 pip或者 easy_install 的方式会报错:

Fixing python error: Unable to find vcvarsall.bat

原因大概是 windows上缺少一些 C编译器东东。源码需要编译一下才能安装,此时 windows就很苦逼了。当然,有一些好心人,帮您把常用的一些库编译成 exe 可执行文件,放到了这个站点。你只需要寻找对于版本的,下载一键安装。

可是,还有一个问题,下载 exe 文件,运行安装,这个库是被安装到了系统的 site-package 目录下,如果我在windows 建立了venv虚拟环境,这样安装不是歇菜了么?

别担心,这个文章的真正技巧,就是为了解决这个问题的。我们来安装64位的 mysqldb。先下载 MySQL‑python‑1.2.5.win‑amd64‑py2.7.exe 在 windows 上,用命令行进入虚拟环境 venv。然后运行

easy_install MySQL‑python‑1.2.5.win‑amd64‑py2.7.exe

完美解决,在 venv 虚拟环境,将mysqldb 库安装到了venv下。

有了上面三个方式,几乎涵盖 python 所有平台的第三方库安装。不过话说回来,尽管 Python 是跨平台,开发环境,还是尽量使用 Linux或者MacOS,这两个系统有更好的工具以及省去很多莫名其妙的问题。

Python 相关文章推荐
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
python操作gmail实例
Jan 14 Python
python pandas生成时间列表
Jun 29 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
python requests证书问题解决
Sep 05 Python
python pycharm的安装及其使用
Oct 11 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
基于python中__add__函数的用法
Nov 25 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 #Python
Python的socket模块源码中的一些实现要点分析
Jun 06 #Python
深入浅析python定时杀进程
Jun 06 #Python
深入理解python函数递归和生成器
Jun 06 #Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 #Python
浅析AST抽象语法树及Python代码实现
Jun 06 #Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 #Python
You might like
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
python实现端口转发器的方法
2015/03/13 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
大学考试作弊检讨书
2014/01/30 职场文书
运动会稿件50字
2014/02/17 职场文书
党员四风剖析材料
2014/08/27 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
校运会通讯稿
2015/07/18 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python