Kann Animation nicht in matplotlib speichern: Windows-Berechtigung verweigert

Ich habe einen Tag lang versucht, dies zu klären und ähnliche Themen zu überprüfen, aber ohne Erfolg. Stretch's Matplotlib-Animation kann nicht mit ffmpeg gespeichert werden hat bei früheren Fehlern geholfen (ich hatte einen falschen ffmpeg-Pfad), aber ich habe immer wieder Zugriff verweigert, nachdem ich ihn behoben habe.

Meine ffmpeg-Binärdatei ist anC:\ffmpeg\bin

Eine gute Alternative wäre, GIF-Dateien exportieren zu können, aber ich bekomme immer wieder einen ASCII-Fehler mit imagemagick. Ich denke, beide Probleme hängen zusammen, also wollte ich zuerst das ffmpeg klären.

Ich denke, das Problem hat möglicherweise damit zu tun, dass ich mit Canopy (in Windows 8 64-Bit) arbeite, das meine Pfadvariable ziemlich hegemonisiert und einige Dinge auf dem Weg gebrochen hat (z. B. kann ich IDLE seit der Installation nicht öffnen Baldachin, habe noch nicht versucht, das zu beheben). Als ich die Dinge auf dem Weg reparierte, fand ich mindestens 3 verschiedene Pfadvariablen, die alle aktualisiert wurden: Windows-Pfad für erweiterte Einstellungen (manuell festgelegt), Windows-Konsolenpfad (über Konsole mit setx festgelegt) und sys.path (festgelegt oder aktiviert) zur Laufzeit), @ hinzufüg";C:\ffmpeg\bin", wo ffmpeg effektiv ist. Egal, ob ich das Problem aussortiere oder nicht, ich möchte wissen, welche dieser Umgebungsvariablen für was relevant sind. Ich finde das sehr verwirrend.

Der Code lautet wie folgt:

# -*- coding: utf-8 -*-
import sys
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
plt.rcParams['animation.ffmpeg_path'] = r'C:\ffmpeg\bin'
if r'C:\ffmpeg\bin' not in sys.path: sys.path.append(r'C:\ffmpeg\bin')

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))
    line.set_data(x, y)
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=True)
plt.show()

# This case generates Windows err: Access Denied
FFwriter = animation.FFMpegWriter()
# anim.save(r'C:\basic_animation.mp4', writer = FFwriter, fps=30)

# This case generates UnicodeDecodeError:'ascii' codec can't decode byte 0xa0 in position 3
# anim.save(r'C:\animation.gif', writer='imagemagick', fps=30)

Der Traceback füranim.save(r'C:\basic_animation.mp4', writer = FFwriter, fps=30):

%run "C:\Users\Yahveh\Documents\Vlad\Investigacion\animation saving.py"
---------------------------------------------------------------------------
WindowsError                              Traceback (most recent call last)
C:\Users\Yahveh\Documents\Vlad\Investigacion\animation saving.py in <module>()
     27 # This case generates Windows err: Access Denied
     28 FFwriter = animation.FFMpegWriter()
---> 29 anim.save(r'C:\basic_animation.mp4', writer = FFwriter, fps=30)
     30 
     31 # This case generates UnicodeDecodeError:'ascii' codec can't decode byte 0xa0 in position 3

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\animation.pyc in save(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs)
    759         # since GUI widgets are gone. Either need to remove extra code to
    760         # allow for this non-existant use case or find a way to make it work.
--> 761         with writer.saving(self._fig, filename, dpi):
    762             for data in zip(*[a.new_saved_frame_seq()
    763                               for a in all_anim]):

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.2.2785.win-x86_64\lib\contextlib.pyc in __enter__(self)
     15     def __enter__(self):
     16         try:
---> 17             return self.gen.next()
     18         except StopIteration:
     19             raise RuntimeError("generator didn't yield")

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\animation.pyc in saving(self, *args)
    184         '''
    185         # This particular sequence is what contextlib.contextmanager wants
--> 186         self.setup(*args)
    187         yield
    188         self.finish()

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\animation.pyc in setup(self, fig, outfile, dpi, *args)
    174         # Run here so that grab_frame() can write the data to a pipe. This
    175         # eliminates the need for temp files.
--> 176         self._run()
    177 
    178     @contextlib.contextmanager

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\animation.pyc in _run(self)
    202                                       stdout=output, stderr=output,
    203                                       stdin=subprocess.PIPE,
--> 204                                       creationflags=subprocess_creation_flags)
    205 
    206     def finish(self):

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.2.2785.win-x86_64\lib\subprocess.pyc in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags)
    707                                 p2cread, p2cwrite,
    708                                 c2pread, c2pwrite,
--> 709                                 errread, errwrite)
    710         except Exception:
    711             # Preserve original exception in case os.close raises.

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.2.2785.win-x86_64\lib\subprocess.pyc in _execute_child(self, args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, startupinfo, creationflags, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite)
    955                                          env,
    956                                          cwd,
--> 957                                          startupinfo)
    958             except pywintypes.error, e:
    959                 # Translate pywintypes.error to WindowsError, which is

WindowsError: [Error 5] Acceso denegado 

Der Traceback füranim.save(r'C:\animation.gif', writer='imagemagick', fps=30):

In [8]: %run "C:\Users\Yahveh\Documents\Vlad\Investigacion\animation saving.py"
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
C:\Users\Yahveh\Documents\Vlad\Investigacion\animation saving.py in <module>()
     30 
     31 # This case generates UnicodeDecodeError:'ascii' codec can't decode byte 0xa0 in position 3
---> 32 anim.save(r'C:\animation.gif', writer='imagemagick', fps=30)

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\animation.pyc in save(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs)
    765                     # TODO: Need to see if turning off blit is really necessary
    766                     anim._draw_next_frame(d, blit=False)
--> 767                 writer.grab_frame(**savefig_kwargs)
    768 
    769         # Reconnect signal for first draw if necessary

C:\Users\Yahveh\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\animation.pyc in grab_frame(self, **savefig_kwargs)
    225             verbose.report('MovieWriter -- Error '
    226                            'running proc:\n%s\n%s' % (out,
--> 227                                                       err), level='helpful')
    228             raise
    229 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 3: ordinal not in range(128) 

Starrte sie eine Weile an.

Vielen Dank für Ihre Zeit

AKTUALISIEREN Ich habe die Schritte in @ befoldieser Beitra, um Zugriff auf C: \ ffmpeg und den Zielordner zu gewähren, aber kein Glück:

Antworten auf die Frage(4)

Ihre Antwort auf die Frage