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的常见命令注入威胁
Feb 18 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
python获取目录下所有文件的方法
Jun 01 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python任务调度模块APScheduler使用
Apr 15 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
Python 操作SQLite数据库的示例
Oct 16 Python
Pandas自定义选项option设置
Jul 25 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 简易输出CSV表格文件的方法详解
2013/06/20 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP会话控制实例分析
2016/12/24 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript  Error 对象 错误处理
2008/05/18 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
javascript每日必学之多态
2016/02/23 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
js实现点击生成随机div
2020/01/16 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python autoescape标签用法解析
2020/01/17 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
python用700行代码实现http客户端
2021/01/14 Python
父亲生日宴会答谢词
2014/01/10 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
语文教师求职信范文
2015/03/20 职场文书
2016公司年会通知范文
2015/04/25 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
利用python调用摄像头的实例分析
2021/06/07 Python