2016-11-22 2 views
0

Я бегу в эту ошибку сегодня, код:OverflowError: Python INT слишком большой, чтобы преобразовать C SSIZE_T

import networkx as nx 
import matplotlib.pyplot as plt 

l = [ 
    1, 7, 0, 0, 6, 8, 1, 8, 0, 5, 4, 2, 2, 8, 8, 4, 5, 4, 8, 3, 1, 8, 0, 1, 9, 
    7, 5, 4, 5, 4, 2, 4, 5, 8, 1, 4, 4, 5, 7, 4, 5, 2, 4, 2, 4, 7, 8, 5, 0 
] 

plt.figure(15, figsize=(15, 7)) 
pos = {} 

for i in range(0, len(l)): 
    pos[i] = (i, l[i]) 

X = nx.Graph() 
X.add_nodes_from(pos.keys()) 

for i in range(0, len(l) - 1): 
    X.add_edge(i, i + 1, weight=1, label='I') 

for n1, p in pos.items(): 
    X.node[n1]['pos'] = p 

labeldict = dict(zip(range(0, len(l)), [str(i) for i in l])) 
nx.draw_networkx_nodes(X, pos, node_size=200, node_color='orange') 
nx.draw_networkx_labels(
    X, pos, labels=labeldict, font_size=14, font_family='sans-serif') 
nx.draw_networkx_edges(X, pos, width=1, edge_color='g') 
plt.show() 

Но я никогда не впадать в эту ошибку с аналогичным кодом BEFOR, может кто-нибудь сказать мне, как пришел Ошибка?

Полная ошибка:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/usr/lib/python3/dist-packages/matplotlib/backends/tkagg.py", line 22, in blit 
    id(data), colormode, id(bbox_array)) 
_tkinter.TclError: invalid command name "PyAggImagePhoto" 

Во время обработки вышеуказанного исключения, другое исключение произошло:

Traceback (most recent call last): 
    File "/usr/lib/python3.5/tkinter/__init__.py", line 1562, in __call__ 
    return self.func(*args) 
    File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 283, in resize 
    self.show() 
    File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 355, in draw 
    tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2) 
    File "/usr/lib/python3/dist-packages/matplotlib/backends/tkagg.py", line 26, in blit 
    _tkagg.tkinit(tk.interpaddr(), 1) 
OverflowError: Python int too large to convert to C ssize_t 
+0

Код - это извлечение из моей программы, но программа работает хорошо. – Tom

+0

этот код в настоящее время не вызывает ошибку для меня. В любом случае, пожалуйста, отправьте сообщение трассировки, которое вы получите при получении ошибки. –

+0

Я добавляю Traceback. – Tom

ответ

0

Кажется, т проблем выходят из TkAgg бэкэнда, я пытаюсь добавить:

import matplotlib 
matplotlib.use('Qt5Agg') 

перед тем

import matplotlib.pyplot as plt 

Неожиданно все работает нормально.

+0

Вот почему мы запрашиваем [mcve]. Для людей требуется время и усилия, чтобы прочитать ваш код и подумать о проблеме. Вы должны сделать как можно больше, чтобы удостовериться, что человек, делающий это, по крайней мере использует код, который воспроизводит проблему. – Joel

+0

Кажется, что код не воспроизводит проблему для вас, вы знаете, что код работает вообще. Возможно, это ошибка matplotlib. – Tom