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 相关文章推荐
Python3中的真除和Floor除法用法分析
Mar 16 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Selenium 模拟浏览器动态加载页面的实现方法
May 16 Python
浅谈python下tiff图像的读取和保存方法
Dec 04 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
深入理解pytorch库的dockerfile
Jun 10 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
ajax实现无刷新分页(php)
2010/07/18 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
javascript cookies操作集合
2010/04/12 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
vue项目首屏加载时间优化实战
2019/04/23 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
儿子婚宴答谢词
2014/01/09 职场文书
内勤主管岗位职责
2014/04/03 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
教师节获奖感言
2015/07/31 职场文书
护士医德医风心得体会
2016/01/25 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js