Python程序Run可以正常运行Debug运行报错(已解决)

在PyCharm中,当尝试debug运行包含`drop_duplicates()`的代码时,出现TypeError错误。问题源于numpy库。尝试多种解决方案如更改函数调用方式、设置display选项、处理空值及调整环境配置均未成功。最终通过删除.idea文件,升级pip、numpy和pandas至最新版本,以及清除缓存解决了问题。
摘要由CSDN通过智能技术生成

1、问题描述


今天在PyCharm调试Python程序的时候,发现直接run可以正常运行,debug运行报错。

Debug运行报错内容:

Traceback (most recent call last):
File “D:\Program Files\Python310\lib\site-packages\numpy\core\getlimits.py”, line 687, in __init__
Self.dtype = numeric.dtype(int_type)
TypeError: ‘NoneType’ object is not callable
......

报错方法:drop_duplicates()

于是写了一个简单的测试程序:

import pandas as pd
df = pd.DataFrame({'name': ['a', 'b', 'b'], 'age': [18, 20, 19]})
print(df)
df.drop_duplicates(subset=['name'], keep='first', inplace=True)
print(df)

1) 直接run运行该程序,程序正常输出,没有问题

在这里插入图片描述

2) debug运行该程序,发现报错内容与上述描述一致

在这里插入图片描述

2、 问题查找


通过查找资料,排查原因,尝试了网上各位大佬的很多建议:

1) 去掉调用函数后面(),注意!这是一个坑,这样可以不让程序报错,原因是这个函数就不执行了,当然不报错了!函数调用使用:函数名();不加()为函数对象

2)df.drop_duplicates(subset=[‘name’], keep=‘first’, inplace=‘True’)换成其他写法:

写法1:df = df.drop_duplicates(‘name’):未解决…

写法2:在该语句上面添加:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

未解决…

写法3:考虑name列是否存在空值,在该语句上面添加:

df.fillna(0, inplace=True)

未解决…

方法n:……

未解决…

3) 清除缓存:File->Invalidate Caches / Restart->Invalidate and Restart,并重启PyCharm,未解决…

在这里插入图片描述
4) 关掉Auto:File->settings->Build, Execution, Deployment->Python Debugger,未解决…

在这里插入图片描述
5) 编辑运行环境配置,未解决…

在这里插入图片描述
6) 其他:未解决…

3、 问题解决


最终摸着石头过河,尝试了以下方法,发现可以完美解决:

1) 关闭PyCharm(关闭项目),在本地项目路径下找到所有.idea文件删除

2) 打开PyCharm(打开项目),继续执行清除缓存:File->Invalidate Caches / Restart->Invalidate and Restart,并重启PyCharm

3) 打开终端(Windows PowerShell):依次执行如下命令(关键所在,1)、2)步可省略):

pip install --upgrade pip
pip install --upgrade numpy
pip install --upgrade pandas

更新pip、numpy、pandas到最新版本

至此,再次debug运行上述程序,不再报错。完美解决!差点重装PyCharm重新克隆项目重新配置啦!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值