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 相关文章推荐
Django接受前端数据的几种方法总结
Nov 04 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
tensorflow实现简单的卷积神经网络
May 24 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
python实现图片转字符小工具
Apr 30 Python
numpy数组广播的机制
Jul 12 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
Python 复平面绘图实例
Nov 21 Python
python Django框架快速入门教程(后台管理)
Jul 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脚本的10个技巧(1)
2006/10/09 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python批量查询域名是否被注册过
2017/06/21 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
python散点图实例之随机漫步
2018/08/27 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python对execl 处理操作代码
2020/06/22 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
广告设计应届生求职信
2014/03/01 职场文书
学校花圃的标语
2014/06/18 职场文书
委托书怎么写
2014/07/31 职场文书
论文评审意见
2015/06/05 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
Python 发送SMTP邮件的简单教程
2021/06/24 Python
Github 使用python对copilot做些简单使用测试
2022/04/14 Python
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript