[英]“IOError: [Errno 32] Broken pipe” when saving animation files in anaconda python
我有一個來自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
讓我自己解決! 我使用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
我認為應該是
ani.save('basic_animation.mp4', fps=30)
並不是
anim.save('basic_animation.mp4', fps=30)
如果你定義的變量是ani
我也有這個問題。 指定writer='imagemagick'
為我工作。
anim.save('basic_animation.mp4', fps=30, writer='imagemagick')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.