Python中的各种报错-使用包时遇到的错误

目录

zipfile

使用zipfile解压,中文乱码

csv

_csv.Error: need to escape, but no escapechar set

lmdb

lmdb.Error: data_list/train.lmdb: ���̿ռ䲻�㡣

lmdb.MapFullError: mdb_put: MDB_MAP_FULL: Environment mapsize limit reached

sklearn

sklearn.metrics.f1_score报错“ValueError: pos_label=1 is not a valid label. It should be one of ['No', 'Yes']”

gitpython

ImportError: cannot import name 'SupportsIndex'

pyparsing

AttributeError: ‘version_info‘ object has no attribute ‘version‘

scipy

AttributeError: module 'scipy.misc' has no attribute 'imsave'

numpy

AttributeError: 'numpy.ndarray' object has no attribute 'append'

ValueError: Object arrays cannot be loaded when allow_pickle=False

pandas

pandas 报错 AttributeError: 'DataFrame' object has no attribute 'ix'

pd.DataFrame报错:ValueError: arrays must all be same length

Pandas读取Excel文件XLRDError: Excel xlsx file; not supported

nltk

Resource stopwords not found.

opencv

pymysql

RuntimeError: ‘cryptography‘ package is required for sha256_password

用pymysql操作数据库插入数据,数据库里面却没有数据的问题

Packet sequence number wrong

其他

安装Dlib时出现“failed build wheel for Dlib”问题

AssertionError:

sqlite3找不到指定模块

multiprocessing和threading全局变量共享的问题

Tkinter按钮未按却自动执行command中定义的函数

Flask

Windows环境下安装pycocotools报错​​​​​​​


zipfile

使用zipfile解压,中文乱码

将cp437改为gbk,参考代码:

    def unzip(file_path, dir_path):
        with zipfile.ZipFile(file=file_path, mode="r") as zip_ref:
            for file_info in zip_ref.infolist():
                file_info.filename = file_info.filename.encode('cp437').decode('gbk')
                zip_ref.extract(file_info, dir_path)

csv

_csv.Error: need to escape, but no escapechar set

指定 escapechar 参数

writer = csv.writer(file, delimiter=',', quoting=csv.QUOTE_NONE, escapechar=',')

lmdb

lmdb.Error: data_list/train.lmdb: ���̿ռ䲻�㡣

map_size改小一点,或者不要赋值

lmdb.MapFullError: mdb_put: MDB_MAP_FULL: Environment mapsize limit reached

map_size改大一点

sklearn

sklearn.metrics.f1_score报错“ValueError: pos_label=1 is not a valid label. It should be one of ['No', 'Yes']”

标签没有转成编码

二分类用0和1表示

gitpython

ImportError: cannot import name 'SupportsIndex'

我是python 3.6,最新版的gitpython不兼容,需要装老版本,比如2.1.15

pyparsing

AttributeError: ‘version_info‘ object has no attribute ‘version‘

版本问题,我用pip install pyparsing==2.4.7解决

scipy

AttributeError: module 'scipy.misc' has no attribute 'imsave'

scipy.misc.imsave(save_path, img)

在scipy 1.2以上版本不可用。

可以安装imageio

然后用imageio.imsave(save_path, img)

numpy

AttributeError: 'numpy.ndarray' object has no attribute 'append'

数组不支持append。解决办法就是用list append再转数组。

ValueError: Object arrays cannot be loaded when allow_pickle=False

卸载掉numpy 1.16.3,安装numpy 1.16.2

pip3 install numpy==1.16.2

或者在np.load里指定allow_pickle=True

pandas

pandas 报错 AttributeError: 'DataFrame' object has no attribute 'ix'

dataset.ix[i, 0]方法已被移除

可以用iloc

dataset.iloc[i,0]

pd.DataFrame报错:ValueError: arrays must all be same length

使用DataFrame(dict) 来用dict构建DataFrame时,key会变成列column,(list-like)values会变为行row,每个values中的list长度不一致,就会产生这个错误。  

解决方法:  df = pd.DataFrame.from_dict(d, orient='index')  #d为要构建的dict

最终产生结果:  行数为key值,列数为最长的values的长度,而其他较短的values则用None填充。

Pandas读取Excel文件XLRDError: Excel xlsx file; not supported

安装:

pip install openpyxl

代码:
dataframe = pd.read_excel(PATH, engine='openpyxl')

nltk

Resource stopwords not found.

前提nltk库已安装

打开cmd,进入python环境,或者其他方式进入python环境

import nltk

nltk.download('stopwords')

不过国内访问不了下载地址

所以也给个网盘地址:百度网盘 请输入提取码,提取码:znx7

如果使用anaconda环境,要放到envs\环境名\nltk_data目录下

opencv

Python中的各种报错-opencv-python_天边一坨浮云的博客-CSDN博客

pymysql

RuntimeError: ‘cryptography‘ package is required for sha256_password

安装cryptography

pip install cryptography

用pymysql操作数据库插入数据,数据库里面却没有数据的问题

执行完excute那一行语句以后,要有commit语句

比如

......

cur.execute(xxxx)

cur.connection.commit()

......

Packet sequence number wrong

短时间内MySQL连接太多导致。

用连接池可以解决。

其他

安装Dlib时出现“failed build wheel for Dlib”问题

安装visual studio,勾选C++开发包

AssertionError:

Found no NVIDIA driver on your system. Please check that you

have an NVIDIA GPU and installed a driver from

Download Drivers | NVIDIA

需要NVIDIA的GPU

sqlite3找不到指定模块

File "E:\Anaconda3\envs\NLR\lib\site-packages\nltk\corpus\__init__.py", line 66, in <module>     from nltk.corpus.reader import *   File "E:\Anaconda3\envs\NLR\lib\site-packages\nltk\corpus\reader\__init__.py", line 105, in <module>     from nltk.corpus.reader.panlex_lite import *   File "E:\Anaconda3\envs\NLR\lib\site-packages\nltk\corpus\reader\panlex_lite.py", line 15, in <module>     import sqlite3   File "E:\Anaconda3\envs\NLR\lib\sqlite3\__init__.py", line 23, in <module>     from sqlite3.dbapi2 import *   File "E:\Anaconda3\envs\NLR\lib\sqlite3\dbapi2.py", line 27, in <module>     from _sqlite3 import * ImportError: DLL load failed: 找不到指定的模块。

将sqlite3.dll复制到python环境的DLLs文件夹下

multiprocessing和threading全局变量共享的问题

对于以下代码,用multiprocessing时无效,因为multiprocessing是多进程,进程间无法共享全局变量,但用threading可以,因为threading是多线程。

multiprocessing可以用管道的方式传输。

注意使用全局变量前,要先用global声明。

from threading import Thread,Lock
  
  
global_num = 0
  
def func1():
    global global_num
    for i in range(1000000):
        lock.acquire()#两个线程会最开始抢这个锁,拿到锁就会处于关锁,执行后面的程序,其他线程执行处于监听状态,等待这个线程开锁,再抢锁
        global_num += 1
        lock.release()
    print('---------func1:global_num=%s--------'%global_num)
  
def func2():
    global global_num
    for i in range(1000000):
        lock.acquire()
        global_num += 1
        lock.release()
    print('--------fun2:global_num=%s'%global_num)
print('global_num=%s'%global_num)
  
lock = Lock()
  
t1 = Thread(target=func1)
t1.start()
  
t2 = Thread(target=func2)
t2.start()

Tkinter按钮未按却自动执行command中定义的函数

tkinter要求由按钮(或者其它的插件)触发的控制器函数不能含有参数

即command=fun,而不是command=fun(a)

若要给函数传递参数,需要在函数前添加lambda。

command = lambda: fun(a)

Flask

app = Flask(__name__)

这个__name__的值是'__main__'

在pycharm调试模式下报错NoneType object is not iterable

pycharm运行模式下并不报错

改为

app = Flask('项目根目录名字')

原因不详

Windows环境下安装pycocotools报错

需要有visual c++环境,安装之后再pip install pycocotools即可

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值