在Spyder中不能在pygal中多次render_to_file

时间:2017-07-31 14:47:47

标签: python anaconda spyder pygal

简短版
在Spyder中,如果我多次运行一个脚本来保存带有pygal 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,但会停在那里。

如果我重新启动内核(控制台 - >重新启动内核),它将只会再次运行而不会出错。另请注意,如果我运行上面的脚本,但是将{em>第二次调用添加到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

相关问题

0 个答案:

没有答案