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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
python执行使用shell命令方法分享
Nov 08 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
wxPython的安装与使用教程
Aug 31 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
Python爬虫之爬取某文库文档数据
Apr 21 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中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php定界符
2014/06/19 PHP
php动态变量定义及使用
2015/06/10 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
Python转换HTML到Text纯文本的方法
2015/01/15 Python
python实现微信远程控制电脑
2018/02/22 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Django ModelForm操作及验证方式
2020/03/30 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
基于keras中的回调函数用法说明
2020/06/17 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
python基于openpyxl生成excel文件
2020/12/23 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
MySQL面试题
2014/01/12 面试题
怀孕辞职信怎么写
2015/02/28 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
python 调用js的四种方式
2021/04/11 Python