短版
在 Spyder 中,如果我多次运行一个脚本来保存带有 pygal's 的地图render_to_file
,我会得到一个TypeError
. 它第一次工作正常。
详细版本
我正在尝试在 Python 3.6 中使用 pygal (2.4.0) 保存地图,如下所示:
from pygal.maps.world import World
worldmap = World()
worldmap.add('Random Places', ['mx', 'bz', 'ru', 'th', 'et'])
worldmap.render_to_file('random_places.svg')
当我从终端运行任意多次时它工作正常(我在 Ubuntu 上)。当我第一次使用 F5 从 Spyder (3.2)运行它时,它也可以正常工作。奇怪的是,当我尝试在 Spyder 中再次运行代码时,在它已经运行一次并工作之后,最后一行会抛出一个TypeError
. 它创建一个空文件random_places.svg
,但停在那里。
如果我重新启动内核(控制台 - >重新启动内核),它只会再次运行而不会出错。另请注意,如果我运行上面的脚本,但添加第二次调用render_to_file
,它也可以正常工作(所以它不像第一次调用会以某种方式破坏事物)。
这是回溯:
File "/home/neuronet/SO_pygal_spyder", line 21, in <module>
worldmap.render_to_file('random_places.svg')
File "/home/neuronet/.local/lib/python3.6/site-packages/pygal/graph/public.py", line 114, in render_to_file
f.write(self.render(is_unicode=True, **kwargs))
File "/home/neuronet/.local/lib/python3.6/site-packages/pygal/graph/public.py", line 52, in render
self.setup(**kwargs)
File "/home/neuronet/.local/lib/python3.6/site-packages/pygal/graph/base.py", line 185, in setup
self.state = State(self, **kwargs)
File "/home/neuronet/.local/lib/python3.6/site-packages/pygal/state.py", line 35, in __init__
merge(self.__dict__, graph.config.__class__.__dict__)
File "/home/neuronet/.local/lib/python3.6/site-packages/pygal/util.py", line 384, in merge
dict1[key] = mergextend(val, dict1.get(key, ()))
File "/home/neuronet/.local/lib/python3.6/site-packages/pygal/util.py", line 370, in mergextend
if list1 is None or _ellipsis not in list1:
TypeError: argument of type 'Key' is not iterable
相关问题