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 list使用示例 list中找连续的数字
Jan 27 Python
python实现simhash算法实例
Apr 25 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
python3实现域名查询和whois查询功能
Jun 21 Python
python opencv实现证件照换底功能
Aug 19 Python
opencv实现简单人脸识别
Feb 19 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Python如何在循环内使用list.remove()
Jun 01 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
Python高并发解决方案实现过程详解
Jul 31 Python
pycharm 实现复制一行的快捷键
Jan 15 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
php 在线打包_支持子目录
2008/06/28 PHP
php 代码优化之经典示例
2011/03/24 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
layui表格数据重载
2019/07/27 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
Django框架安装方法图文详解
2019/11/04 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
函授大专自我鉴定
2013/11/01 职场文书
工厂厂长的职责
2013/12/12 职场文书
自我鉴定四大框架
2014/01/17 职场文书
信息工作经验交流材料
2014/05/28 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
HTML基本元素标签介绍
2022/02/28 HTML / CSS