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开发vim插件及心得分享
Nov 04 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 Python
python getpass实现密文实例详解
Sep 24 Python
Python使用正则实现计算字符串算式
Dec 29 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python输出指定字符串的方法
Feb 06 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
python小程序之飘落的银杏
Apr 17 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP基础之运算符的使用方法
2013/04/28 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python虚拟环境迁移方法
2019/01/03 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
python list转置和前后反转的例子
2019/08/26 Python
python中的itertools的使用详解
2020/01/13 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
11月升旗仪式讲话稿
2014/02/15 职场文书
管理标语大全
2014/06/24 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
新入职员工工作总结
2015/10/15 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
POST提交数据常见的四种方式
2022/01/18 HTML / CSS