【问题标题】:"IOError: [Errno 32] Broken pipe" when saving animation files in anaconda python在anaconda python中保存动画文件时出现“IOError:[Errno 32] Broken pipe”
【发布时间】:2016-06-01 16:23:00
【问题描述】:

我有一个来自 matplotlib 示例的非常简单的代码:

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,我只是运行: conda install -c https://conda.anaconda.org/mutirri ffmpeg

【问题讨论】:

    标签: python matplotlib anaconda


    【解决方案1】:

    自己解决!我使用 conda install 来获取 ffmpeg,但是在使用 ffmpeg --version 时总是会说:

    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
    

    【讨论】:

      【解决方案2】:

      我也有这个问题。指定 writer='imagemagick' 对我有用。

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

      【讨论】:

        【解决方案3】:

        我觉得应该是的

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

        而不是

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

        如果你定义的变量是ani

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-02
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-22
        相关资源
        最近更新 更多