各种常见报错汇总

文章目录

【报错解决办法】ModuleNotFoundError: No module named ‘cyvlfeat‘

解决办法:安装cyvlfeat

下面命令任选:

conda install -c menpo cyvlfeat
conda install -c menpo/label/new_condaci cyvlfeat
conda install -c menpo/label/hog_fortran cyvlfeat
conda install -c menpo/label/remove-repeated-cyutils cyvlfeat
conda install -c menpo/label/python35 cyvlfeat
conda install -c menpo/label/fisher cyvlfeat
conda install -c menpo/label/array_ordering cyvlfeat
conda install -c menpo/label/master cyvlfeat
conda install -c menpo/label/use-miniver cyvlfeat

对应anaconda中的官方网址:https://anaconda.org/menpo/cyvlfeat(网上其他的解决办法就NM离谱)

可能出现的问题:
python版本不对应,cyvlfeat只适应于python3.6及以下,所以3.7以上还需要将python改为更低的版本。

conda install python=3.6

注意这里不是判等“==”,是一个"=",pip安装是判等。

然后排一个网上写的解决办法的神坑:

百度搜,知乎链接:请问Python怎么安装vlfeat?

其中最离谱的是第二个回答:

stackoverflow上面的答案
在这里插入图片描述
尼玛通道menpo都能打错成menlo,可能它叫梅隆…

【报错解决办法】ImportError: CuPy is not correctly installed.和DLL load failed

报错原因:

1.安装的CuPy和Cuda版本对应不一致
注:这里的不一致指的是CuPy版本要与环境变量中的Cuda版本一致。比如你自己的Cuda是11.2的,但是安装的是11.1的,那么CuPy就要安装11.1的。可以低于当前版本。

具体安装CuPy版本办法:
在这里插入图片描述
查看Cuda版本:

电脑右下角NVIDIA控制面板:
在这里插入图片描述
点击左下角系统信息:
在这里插入图片描述
组件中查看Cuda版本。我的是11.2。

  1. 没有配置Cuda环境变量

查看环境变量:

我的电脑-属性-高级系统设置-系统属性-环境变量:
在这里插入图片描述
系统变量应该有Cuda目录。

都配置好之后报错解决。

ImportError:No modele named ‘fake_useragent‘的解决办法

在对应的conda环境下:

pip install fake-useragent

即可解决。

注意是fake-useragent,不是fake_useragent

ValueError: Object arrays cannot be loaded when allow_pickle=False的解决办法

在np.load参数列表中加入allow_pickle=True

如:

datas = np.load("1.npz",allow_pickle=True)

即可完美解决。

ModuleNotFoundError: No module named ‘torchnet‘的解决办法

在相应的环境下:

pip install git+https://github.com/pytorch/tnt.git@master

安装成功即可解决:
在这里插入图片描述

# AttributeError: The index2word attribute has been replaced by index_to_key since Gensim 4.0.0.解决办法

如题,将代码中的index2word改为index_to_key

这是由于gensim的版本不同导致的,Gensim 4.0以上index2word都被index_to_key代替。

UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 22: illegal multibyte sequence解决

解决办法:

with open(filepath, type) as f:

改为

with open(filepath, type,encoding='UTF-8') as f:

init() got an unexpected keyword argument ‘size‘ 错误的解决办法

在调用gensim.models的Word2Vec方法时发生错误,具体如下:

model = Word2Vec(sentences=ls_of_ls_of_c, size=config.size, window=config.window, min_count=config.min_count)

时发生报错:** init() got an unexpected keyword argument ‘size’ **

解决办法:将参数size改为vector_size

修改为

model = Word2Vec(sentences=ls_of_ls_of_c, vector_size=config.size, window=config.window, min_count=config.min_count)
```# 【报错解决】No module named ‘pywt‘和ModuleNotFoundError: No module named ‘skimage.metrics‘
解决办法:
```t
pip install pywavelets
或直接
pip install scikit-image
会自动安装相关依赖pywavelets

之后若报错:
ModuleNotFoundError: No module named ‘skimage.metrics‘

则是skimage版本过低导致,更新到最新版(或0.18往上)即可:

pip install scikit-image --upgrade

【报错解决】matlab报错:缺少动态链接库VCOMP100.DLL

问题分析:
matlab报错:缺少动态链接库VCOMP100.DLL
在编译某mexw64文件时可能出现。
原因:windows10版本的C:\Windows\System32目录下动态链接库已经是VCOMP140.DLL版本。

解决办法:

下载VCOMP100.DLL
下载链接:VCOMP100.DLL
放到C:\Windows\System32目录下。或自己matlab项目报错的目录下
即可完美解决。

【报错解决】matlab报错:尝试将 SCRIPT vl_sift 作为函数执行

问题原因:

1.函数名与文件名相同

2.缺少\vlfeat-0.9.21\toolbox\mex\mexw64

文件目录:

\vlfeat-0.9.21\toolbox\sift\vl_sift.m

出错函数目录:

[ kp1,ds1 ] = vl_sift(single(rgb2gray(img1)),'PeakThresh', 0,'edgethresh',3);

解决方案:

1.将vl_sift.m重命名为vl_sift1.m即可完美解决

2.将其他项目中的mex文件夹复制到\vlfeat-0.9.21\toolbox目录下

vlfeat-0.9.21版本可能会有这个问题。vlfeat-0.9.14版本mex基本上都编译过了。所以没有这个问题。

【报错解决办法】ModuleNotFoundError: No module named ‘numba‘

numba 是一款可以将 python 函数编译为机器代码的JIT编译器,经过 numba 编译的python 代码(仅限数组运算),其运行速度可以接近 C 或 FORTRAN 语言。python 之所以慢,是因为它是靠 CPython 编译的,numba 的作用是给 python 换一种编译器。

numba可以基于llvm动态生成优化代码,提高python的执行效率,只需要给python代码加上修饰器就好了。

如果遇到ImportError: No module named numba这样的问题,安装numba即可,而安装numba依赖于llvmlite,因此解决方案如下:

pip install numba
#会自动安装numba及依赖
#如果没自动安装依赖llvmlite
pip install llvmlite

【报错解决办法】AttributeError: module ‘cv2.cv2‘ has no attribute ‘SIFT_create‘

报错位置

sift = cv2.SIFT_create()

报错原因:opencv将SIFT等算法整合到xfeatures2d集合里面了。
改为:

sift = cv2.xfeatures2d.SIFT_create()

即可完美解决。

【报错解决办法】ValueError: not enough values to unpack (expected 3, got 2)

image, contours, hierarchy = cv2.findContours(cv2.cvtColor(mask2, cv2.COLOR_BGR2GRAY), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

上面代码行报错。
原因:老版的opencv返回三个值,新版的返回两个值

改为

contours, hierarchy = cv2.findContours(cv2.cvtColor(mask2, cv2.COLOR_BGR2GRAY), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

即可完美解决。

【报错解决办法】could not find a writer for the specified extension in function ‘cv::imwrite_‘

出现错误:
error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-oduouqig\opencv\modules\imgcodecs\src\loadsave.cpp:682: error: (-2:Unspecified error) could not find a writer for the specified extension in function ‘cv::imwrite_’

原因是因为写入的图片没有加后缀。

【报错解决办法】IncompleteRead: IncompleteRead(147317 bytes read)

IncompleteRead是python原生库httplib的异常。HTTP通道返回0字节,或者返回一定字节后卡住。
Python request库下面的函数中添加timeout参数:

request.urlopen(url,timeout=10)

【报错解决办法】module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘

报错原因:该算法已经申请专利,开源OpenCV没有版权,高版本的OpenCV去掉了这个算法。

解决方法:卸掉目前的包,安装3.4.2.16版本

按顺序执行即可:

控制台的警告不用管,如果想完美适配,就降低python版本到3.6以下。

pip uninstall opencv-python

pip install opencv-python==3.4.2.16

pip install opencv-contrib-python==3.4.2.16

【报错解决办法】AttributeError: module ‘thread‘ has no attribute ‘start_new_thread‘

项目中有包名thread(python中文件夹名也是包名),与系统的thread库冲突了,把项目中的文件夹改名即可。

即把项目中的thread.py改成其他名称。

pycharm中右键thread.py→refactor→rename→修改为与系统thread库不相同的名称。

【报错解决】ModuleNotFoundError: No module named ‘kornia‘

pip install kornia==0.2.0

【报错解决】C++ 出现错误error: default argument given for parameter的解决办法

错误原因
函数声明和定义中的参数都有赋值。

//.h
void a(int a=0);

//.cpp
void a(int a=0)
{
	//函数内容
}

解决办法
去掉声明或定义中任意一个参数的初值。一般是去掉声明中的初值,因为函数定义中往往需要这个参数的初值。

即:去掉.h文件中函数声明里参数的赋值,保留.cpp文件中函数定义里参数的赋值。

//.h
void a(int a);

//.cpp
void a(int a=0)
{
	//函数内容
}

【报错解决】C++:VS允许代码时main()初始位置出现***处未经处理的异常:Stack overflow的解决办法

Visual Studio解决办法:

报错原因:堆栈溢出,可能是定义的某个变量太大而没有修改栈保留大小所至。本人的问题是用ege画图的时候定义的地图面积太大导致。

解决方法:
项目→属性→链接器→系统→堆栈保留大小→设置成一个比较大的数并应用。即可完美解决,如果还没解决可能是设置的不够大。
在这里插入图片描述
其实真正应该修改的是你的代码,问题就出现在为什么会有栈溢出问题,很简单,显然是数组或者开辟的指针空间太大!
所以,解决办法就是将大数组定义在main()外部当作全局变量,全局变量放在数据区,空间足够使用。或者写在main()中前面加上static,使其变成静态变量,也就相当于全局变量。即可完美解决。
int *a = new int[1000000000];
改为static int *a = new int[1000000000];

超过1M的变量放在全局或者改为静态变量。

CodeBlocks解决办法

报错原因:相同的问题在CodeBlocks中不会有错误说明,只是上来就崩了,说明问题发生在main()的起始。CB没有报错提示真的是不太方便。。。

解决办法:

CodeBlocks没法像VS那样简单的修改堆栈保留空间,解决办法同上述红字。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十小大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值