Python中pip安装非PyPI官网第三方库的方法
作者:junjie 发布时间:2021-01-20 15:51:18
在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.
猜你喜欢
- __author__ = 'clownfish'#coding:utf-8import urllib2,urllib,coo
- Anaconda Jupyter安装拓展nbextensions先在终端pip两个包:Pip install jupyter_contrib
- 在深度学习或者其他类型的GPU运算过程中,对于GPU信息的监测也是一个非常常用的功能。如果仅仅是使用系统级的GPU监测工具,就没办法非常细致
- 什么是孪生神经网络最近学习了一下如何比较两张图片的相似性,用到了孪生神经网络,一起来学习一下。简单来说,孪生神经网络(Siamese net
- CSS3草案中定义了{opacity:来声明元素的透明度,这已经得到了大多数现代浏览器的支持,而IE则很早通过特定的私有属性filter来实
- uni-app简介uni-app是一个使用Vue.js开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小
- 当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱
- os.stat(path) :用于在给定的路径上执行一个系统 stat 的调用。path:指定路径返回值:st_mode: inode 保护
- 如何同时处理数据库和页面错误? If Err.Number = 0 And ob
- 本篇博客介绍利用python脚本实现视频分帧,并将每一帧保存到本地。主要基于opencv包来实现,在运行代码前确保opencv包已正确安装。
- 本文python代码实现的是最小二乘法线性拟合,并且包含自己造的轮子与别人造的轮子的结果比较。问题:对直线附近的带有噪声的数据进行线性拟合,
- 在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述Navicat for
- 对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于
- 一、圆周率的历史1、中国魏晋时期,刘徽曾用使正多边形的边数逐渐增加去逼近圆周的方法 (即「割圆术」),求得π的近似值3.1416。汉朝时,张
- 还原一个数据库:mysql -h localhost -u root -p123456 www<c:\www.sql 备份一个数据库:
- 测试代码:输出简单的ul li1.asp代码如下:<% response.write "<ul>" r
- 本文实例讲述了PHP面向对象程序设计类的定义与用法。分享给大家供大家参考,具体如下:<?phpclass Person {  
- 有时候我们需要将一个对象的某些属性选取出来,比方说我们有一个用数组表示的数据库表,我们需要一些函数来 select (选取) 几个字段:fu
- 正在看的ORACLE教程是:Oracle RMAN快速入门指南。前言: 这篇文章主要介绍RMAN的常用方法,其中包含了作者一些自己的经验,里
- # -*- encoding: utf8 -*-import osimport sysimport ftplibclass FTPSync(