Python中pip安装非PyPI官网第三方库的方法


Posted in Python onJune 02, 2015

在python中安装非自带python模块,有三种方式:

1.easy_install
2.pip
3.下载压缩包(.zip, .tar, .tar.gz)后解压, 进入解压缩的目录后执行python setup.py install命令

本文主要针对pip安装时可能会碰到的一种情况,及解决办法:

假如我要安装pylint模块,该模块非python自带模块,用import肯定不能导入,需要额外安装

>>> import pylint  

Traceback (most recent call last):  

  File "<stdin>", line 1, in <module>  

ImportError: No module named pylint 

【现象】

执行pip install <modulename>命令,报错如下:

D:\>pip install pylint --allow-external pylint  

Downloading/unpacking pylint  

Requirement already satisfied (use --upgrade to upgrade): six in c:\python27\lib\site-packages\six-1  

.8.0-py2.7.egg (from pylint)  

Downloading/unpacking astroid>=1.3.6 (from pylint)  

  Real name of requirement astroid is astroid  

  Could not find any downloads that satisfy the requirement astroid>=1.3.6 (from pylint)  

  Some insecure and unverifiable files were ignored (use --allow-unverified astroid to allow).  

Cleaning up...  

No distributions at all found for astroid>=1.3.6 (from pylint)  

Storing debug log for failure in C:\Users\aaa\pip\pip.log 

【分析】

在Perl中安装新模块,一般可以用PPM图形化工具,也可以用CPAN来安装,比如说: cpan>install Test::Class, 非常方便,不会碰到这种情况,这种情况主要是因为pip版本问题: pip最新的版本(1.5以上的版本), 出于安全的考
虑,pip不允许安装非PyPI的URL,因为该安装文件实际上来自pylint.org,因而导致上面的错误!

NOTE:

1. 可以在官方changelog里面查看更改的信息
2. 可以用pip --version来查看pip的版本信息

C:\>pip --version  

pip 1.5.6 from C:\Python27\lib\site-packages (python 2.7) 

【办法】

针对上面的情况,既然这个问题是因为pip版本的原因,可以改用pip低一点的版本
方法一: 用pip 1.4版本,再执行pip install pylint命令来安装
方法二: 执行命令时,加上--allow-all-external, --allow-unverified及依赖包版本(astroid==1.3.6)

pip install pylint --allow-all-external pylint astroid==1.3.6 --allow-unverified pylint

NOTE:
1. --allow-all-external   # 允许所有外部地址的标签,只有打上该标签pip方可下载外部地址模块
2. --allow-unverified     #  pip没有办法校验外部模块的有效性,所以必须同时打上该标签
3. astroid==1.3.6          #  依赖包必须要添加上,并赋予其版本号,pip方能从列表下载    

方法三: 在当前目录下,新增requirements.txt,内容如下:

# requirements.txt  

--allow-all-external pylint  

--allow-unverified pylint  

pylint  

--allow-all-external astroid==1.3.6 

再执行: pip install -r requirements.txt
【结论】
1. pip这个设计不够友好,使用也很不方便,远不如Perl中的PPM,期待Python中也有这么个工具。
2. 如果碰到这种错,导致不能安装模块的话: 直接下载压缩包安装好了。 >>>下载包地址<<<
3. 执行pip -h命令查看更新pip相关的帮助信息

Usage:     

  pip <command> [options]  

  

Commands:  

  install                     Install packages.  

  uninstall                   Uninstall packages.  

  freeze                      Output installed packages in requirements format.  

  list                        List installed packages.  

  show                        Show information about installed packages.  

  search                      Search PyPI for packages.  

  wheel                       Build wheels from your requirements.  

  zip                         DEPRECATED. Zip individual packages.  

  unzip                       DEPRECATED. Unzip individual packages.  

  bundle                      DEPRECATED. Create pybundles.  

  help                        Show help for commands.  

  

General Options:  

  -h, --help                  Show help.  

  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.  

  -V, --version               Show version and exit.  

  -q, --quiet                 Give less output.  

  --log-file <path>           Path to a verbose non-appending log, that only logs failures. This log is active by default at pip.log.  

  --log <path>                Path to a verbose appending log. This log is inactive by default.  

  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.  

  --timeout <sec>             Set the socket timeout (default 15 seconds).  

  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.  

  --cert <path>               Path to alternate CA bundle. 
Python 相关文章推荐
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
详解Python的Django框架中inclusion_tag的使用
Jul 21 Python
python3.5仿微软计算器程序
Mar 30 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
详解Python中的四种队列
May 21 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
python三方库之requests的快速上手
Mar 04 Python
python取余运算符知识点详解
Jun 27 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
python装饰器练习题及答案
Nov 01 Python
Python中字典创建、遍历、添加等实用操作技巧合集
Jun 02 #Python
python实现的文件同步服务器实例
Jun 02 #Python
Python中for循环控制语句用法实例
Jun 02 #Python
python获取目录下所有文件的方法
Jun 01 #Python
Python常用小技巧总结
Jun 01 #Python
Python获取运行目录与当前脚本目录的方法
Jun 01 #Python
Python运算符重载用法实例分析
Jun 01 #Python
You might like
桌面中心(二)数据库写入
2006/10/09 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
js倒计时小程序
2013/11/05 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
Python2.7 实现引入自己写的类方法
2018/04/29 Python
详解python中的线程与线程池
2019/05/10 Python
Python中拆分字符串的操作方法
2019/07/23 Python
django自定义模板标签过程解析
2019/12/14 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
python模拟实现分发扑克牌
2020/04/22 Python
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
护士自荐信范文
2013/12/15 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
小学生安全保证书
2014/02/01 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书