目录
一、DLL load failed while importing _imaging: 找不到指定的模块
二、Cartopy安装失败
三、simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
四、raise IndexError("single positional indexer is out-of-bounds")
五、TypeError: '_AxesStack' object is not callable
问题:
原因:查看报错信息发现是导入from PIL import Image模块错误,查阅资料得知是pillow与python版本不匹配。由于我的pillow版本是在安装anaconda是默认安装的最高版本,因此需要降pillow的版本。
pillow与python的版本对应关系可参考这个博客:(1条消息) DLL load failed while importing _imaging: 找不到指定的模块的解决方法_masteryi-0018的博客-CSDN博客解决:
(1)考虑到我是在anaconda创建的虚拟环境下创建的项目,因此我尝试使用conda命令进行卸载与安装,
conda uninstall pillow
conda install pillow=8.3
但是没有解决。
(2)网上有人说是由于高版本的python,某些包的依赖包的版本没跟上,就会出现DLL的情况。
我目前的conda虚拟环境是python3.9,于是我换了一个conda虚拟环境python3.8的,发现没有报这个错了。
问题:在PyCharm中pip安装Cartopy库时遇到了报错
解决:查看Cartopy官方文档,可以使用Conda安装。
因为我已安装Anaconda编译器并进行了配置,安装Cartopy,在终端输入以下代码:
conda install -c conda-forge cartopy
等待一段时间,安装成功。
问题:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
原因:大概率是 json.load()
载入json
文件时出现了错误,问题一般是由于json
文件损坏或内容缺失,题主是因为open()
文件的时候选择了read
模式导致json
文件被清空。
问题:使用pandas模块对csv文件进行读取,过程中遇到了报错
原因:指索引下标越界了,所以找到报错的地方检查下标是否在数据列表范围内。说白一些就是列表的最后一行数据不能向下计算了,需要忽略。
解决:想办法把它忽略掉,可以再遍历的时候将数值减一
问题:在使用nx.draw时出现的一个错误,
原因:可能是目前安装的networkx版本有问题
解决:
(1)网上有人说,升级networkx库的版本就可以了,
但是,我试了一下,还是不行。
(2)修改代码,调用nx.draw_networkx_edges
# nx.draw(G, pos, edge_color='lightseagreen', alpha=0.5)
nx.draw_networkx_edges(G, pos, edge_color='lightseagreen', width=2) # 设置边的颜色
目前全部代码:
import matplotlib.pyplot as plt
import networkx as nx
import numpy as np
import pickle
# 创建:空的 有向图
G = nx.MultiDiGraph()
row = np.array(['D1', 'D2', 'D3', 'D4', 'D5', 'F1', 'F2', 'F3', 'M1', 'M6', 'M3', 'M4', 'M5', 'G1'])
G.add_nodes_from(['D1', 'D2', 'D3', 'D4', 'D5', 'F1', 'F2', 'F3', 'M1', 'M6', 'M3', 'M4', 'M5', 'G1'])
value = np.array([12, 12, 34, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 13])
for j in range(0, 14):
for i in range(0, 14):
if i != j:
G.add_weighted_edges_from([(row[j], row[i], 2)]) # 边的起点,终点,权重
else:
pass
node_sizes = [44, 22, 29, 20, 35, 11, 32, 20, 41, 22, 57, 10, 11, 20]
node_sizesnew = []
for i in node_sizes:
i = i * 20
node_sizesnew.append(i)
pos = {'D1': (37.29, 77.42), 'D2': (31.73, 59.91), 'D3': (40.47, 27.53), 'D4': (58.82, 15.55), 'D5': (46.29, 89.65),
'F1': (72, 52), 'F2': (61.64, 45.73), 'F3': (59.22, 59.78), 'G1': (11.64, 49.73), 'M1': (50.55, 49.27),
'M3': (46.56, 56.18), 'M4': (74.75, 74.25), 'M5': (58.25, 46), 'M6': (49.09, 61.09)}
nx.draw_networkx_nodes(G, pos, node_size=node_sizesnew, alpha=0.4)
nx.draw_networkx_labels(G, pos, font_size=8, )
# nx.draw(G, pos, edge_color='lightseagreen', alpha=0.5)
nx.draw_networkx_edges(G, pos, edge_color='lightseagreen', width=2) # 设置边的颜色
plt.savefig("images/MATCH52.png", dpi=200, bbox_inches='tight')
plt.show()
发现可以了。