前情简要:
之前我在写程序的时候,因为运行了别人写的程序文件,不知道为啥,直接报出了这个问题:
ValueError: numpy.dtype size changed, may indicate binary
incompatibility. Expected 96 from C header, got 88 from PyObject
因为在网上找了很久的解决方案,还是无法解决,于是写了这篇摆烂文章:【Python】遇到pandas 和numpy版本不兼容怎么办?(摆烂篇)
然后后来也尝试了使用重新开一个conda环境,导致,pandas的问题确实是解决了,但是相当于重新再来,也就是我以前用过的一些包,就得重新再下载了
(对于我这种偷懒星人,这实在是不可行)
(关于重新开conda环境,可以看这篇:【Python】怎么创建一个新的conda环境,并在其中安装所需的软件包)
解决思路:
这几天看到这篇文章:【问题】ValueError: numpy.dtype has the wrong size, try recompiling解决
我按照上面的操作,更新了numpy的版本号,但是我升级版本号时,就会遇到:pip 需要update的问题,要更新numpy或者pandas的版本,就得先更新pip的版本!
可是无论试了多少次更新pip ,遇到的问题,不是网络中断,就是不断返回pip的版本过低,要升级pip(这不是陷入循环里面了吗, 哭死)
不过今天,这篇文章给了我一个方向,既然问题在于版本不兼容,我无法更新这两个版本,那么我能不能手动自己替换这两个包呢,把它们换成正常的包就可以了呀。
解决方法:
因为公司有很多台电脑,有另外的电脑是可以正常使用pandas
的,我通过右键点击,找到了存放pandas和numpy包的位置,并复制一份到我的电脑上来。
然后我在pycharm找到我常用的解释器的位置——因为我一直使用的是anaconda 的环境,所以一般就是在这个解释器的位置底下的包。
我有问题的是numpy和pandas的包,或者直接新建一个空白文件,下点击这个包的位置:
我这里也找到了这个pandas的路径位置了。
然后我打开到site_packages这个文件下,把没有问题的numpy和pandas都置换就好啦!
(详细查找 site_packages的方法,可以参考:【Python】anancode怎么快速找到site-packages 的路径位置 )
我把正常没有问题的两个包放着本文这里(在文章上面的资源处),有需要的伙伴可以自取~
最后当我认真看看两个版本有什么不同的时候, 我发现numpy
包的这个文件,的确内容发生了改变:
(原来有问题的)
(全是注释)
(正常没问题的:)
两个包的内容完全是不一样的。
不过置换了以后,我的pandas
真的能正常运行了!!
这给我的教训是:
运行别人的文件的时候,一定要在虚拟环境下运行(不能让别人的文件改动自己的配置!)可以做一个site_packages
里面的所有安装包的备份,这样要是文件被篡改掉了,还能找回来替换! PS: 在替换包的时候,由于版本问题,导入包可能会有不匹配的风险!!!
建议原来的包不要直接替换或者删除,先重命名,或者备份一份,再把后面的包导入,
这样的话可以避免安装包不合适,可以替换回原来的,不至于影响其他安装包的运行哦!