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 Web服务器Tornado使用小结
May 06 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
详细解读Python中的__init__()方法
May 02 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
pytorch 求网络模型参数实例
Dec 30 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
Python加密与解密模块hashlib与hmac
Jun 05 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生成图片验证码-附五种验证码
2015/08/19 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
js获取url参数值的两种方式
2013/09/10 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
Javascript的无new构建实例详解
2016/05/15 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
python中copy()与deepcopy()的区别小结
2018/08/03 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
Python模块 _winreg操作注册表
2020/02/05 Python
Python 高效编程技巧分享
2020/09/10 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
校长先进事迹材料
2014/02/01 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
绿色环保口号
2014/06/12 职场文书
手术室护士个人总结
2015/02/13 职场文书
js不常见操作运算符总结
2021/11/20 Javascript