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实现bitmap数据结构详解
Feb 17 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
python3实现跳一跳点击跳跃
Jan 08 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
详解python tkinter教程-事件绑定
Mar 28 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python实现简单俄罗斯方块
Mar 13 Python
pytorch 实现变分自动编码器的操作
May 24 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php获取微信openid方法总结
2019/10/10 PHP
强制设为首页代码
2006/06/19 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
javascript操作数组详解
2014/12/17 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python中import机制详解
2017/11/14 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
python输出决策树图形的例子
2019/08/09 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
tensorflow 环境变量设置方式
2020/02/06 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
什么是.net的Remoting技术
2016/07/08 面试题
自主实习接收函
2014/01/13 职场文书
职业规划实施方案
2014/06/10 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
教你利用python实现企业微信发送消息
2021/05/23 Python
使用Python解决图表与画布的间距问题
2022/04/11 Python
利用Python实时获取steam特惠游戏数据
2022/06/25 Python