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中return和finally共同挖的坑
Aug 18 Python
python删除服务器文件代码示例
Feb 09 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
python异常触发及自定义异常类解析
Aug 06 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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
杏林同学录(九)
2006/10/09 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
php跨域调用json的例子
2013/11/13 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
python3.0 字典key排序
2008/12/24 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
python中p-value的实现方式
2019/12/16 Python
pandas分组聚合详解
2020/04/10 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
nohup的用法
2014/08/10 面试题
请假条标准格式规范
2014/04/10 职场文书
成本会计实训报告
2014/11/05 职场文书
努力学习保证书
2015/02/26 职场文书
离婚起诉书范本
2015/05/18 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
Redis可视化客户端小结
2021/06/10 Redis