2016-02-19 65 views
3

我从matplotlib例如一个非常简单的代码:“IO错误:[错误32]断管”的蟒蛇蟒蛇保存动画文件时

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

fig, ax = plt.subplots() 
line, = ax.plot(np.random.rand(10)) 
ax.set_ylim(0, 1) 

def update(data): 
    line.set_ydata(data) 
return line, 

def data_gen(): 
    while True: yield np.random.rand(10) 

ani = animation.FuncAnimation(fig, update, data_gen, interval=1000) 
anim.save('basic_animation.mp4', fps=30) 
plt.show() 

一切都是正确的,如果我不使用anim.save( )功能。但是,当我想保存它时,它会报告:

IOError         Traceback (most recent call last) 
<ipython-input-6-8948bc3b3f5c> in <module>() 
    16 
    17 ani = animation.FuncAnimation(fig, update, data_gen, interval=1000) 
---> 18 anim.save('basic_animation.mp4', fps=30) 
    19 plt.show() 

....(traceback details are omitted here) 

/home/xin/anaconda2/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in print_raw(self, filename_or_obj, *args, **kwargs) 
    517    close = False 
    518   try: 
--> 519    fileobj.write(renderer._renderer.buffer_rgba()) 
    520   finally: 
    521    if close: 

IOError: [Errno 32] Broken pipe 

我该如何解决它?或者还有其他方法可以将动画保存到文件中吗?

补充:要安装的ffmpeg,我只需运行: 畅达安装-c https://conda.anaconda.org/mutirri的ffmpeg

回答

2

让它自己解决!我使用畅达安装以获得的ffmpeg,但使用的ffmpeg - 版本时,总是会说:

libssl.so.10: cannot open shared object file: No such file or directory 

所以我用:

sudo ln -s /home/xin/anaconda2/lib/libssl.so.1.0.0 libssl.so.10 

然后获得有关libcrypto.so.10类似的问题,所以我使用方法:

sudo ln -s /home/xin/anaconda2/lib/libcrypto.so.1.0.0 libcrypto.so.10 

两个文件是在/ lib/x86_64的Linux的GNU的。

现在的事情工作!我知道有些人也有类似的问题,所以我在这里记录下来。

在未来,如果需要删除的链接:

cd /lib/x86_64-linux-gnu 
sudo unlink libssl.so.10 
sudo unlink libcrypto.so.10 
0

我觉得应该是

ani.save('basic_animation.mp4', fps=30) 

,而不是

anim.save('basic_animation.mp4', fps=30) 

如果你定义的变量是ani

+0

谢谢,但它仍然报告了同样的问题.....我想这可能是坏了我的设置,因为我是从拷贝确切的例子http://matplotlib.org/examples/animation/ basic_example.html,但仍然得到相同的报告... –

0

我有这个问题了。指定writer='imagemagick'为我工作。

anim.save('basic_animation.mp4', fps=30, writer='imagemagick')