2012-02-09 40 views
5

単純なanimation example codeをPythonで実行しようとすると、解決できないエラーが発生しています。matplotlib.animationエラー - 指定されたファイルが見つかりません

Traceback (most recent call last): 
File "D:/CG/dynamic_image2.py", line 29, in <module> 
    ani.save('dynamic_images.mp4') 
File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 127, in save 
    self._make_movie(filename, fps, codec, frame_prefix) 
File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 164, in _make_movie 
    stdout=PIPE, stderr=PIPE) 
File "C:\Python27\lib\subprocess.py", line 679, in __init__ 
    errread, errwrite) 
File "C:\Python27\lib\subprocess.py", line 893, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

私が見つけた同様の状況(link1link2)それでも、私は鉱山を解決する方法がわからない...

私が使用しています: のPython 2.7.2を| EPD 7.2-2(32 |ビット)| (デフォルト、Sep 14 2011、11:02:05)[MSC v.1500 32ビット(Intel)] win32で

誰かが私を助けることを願っています!

+0

私は** Cからライン163を変更した場合、私は、コードを実行し、アニメーションを得ることができますアウトが見つかりました:\ Python27 \ Libの\サイト・パッケージを\ matplotlibの\ animation.py ** 'PROC = popenのから'proc = Popen(command、shell = True、stdout = PIPE、stderr = PIPE)'に '(command、shell = False、stdout = PIPE、stderr = PIPE)'を実行します。 – carla

+0

しかし、** animation.py **ファイルのこの変更がどれほど安全かはわかりません... [詳細はこちら](http://docs.python.org/library/subprocess.html#frequently -used-arguments) – carla

答えて

1

私は同じ状況に陥っていましたが、アニメーションを見たいだけなら簡単です。あなたのプログムはani.save( 'dynamic_images.mp4')に関連しています。これはアニメーション自体には必要ありません。ただコメントしてください。コーデックがインストールされていないため(ほとんどの場合)、コードがクラッシュします。 animation.pyには以下のコードが含まれています。 _make_movieへの引数コーデックがNoneの場合、ffmpeg(google it)が使用されている場合は、これをインストールしてパス上で利用できるようにする必要があります。それ以外の場合は、mencoderをインストールしてパスに入れる必要があります。

def ffmpeg_cmd(self, fname, fps, codec, frame_prefix): 
    # Returns the command line parameters for subprocess to use 
    # ffmpeg to create a movie 
    return ['ffmpeg', '-y', '-r', str(fps), '-b', '1800k', '-i', 
     '%s%%04d.png' % frame_prefix, fname] 

def mencoder_cmd(self, fname, fps, codec, frame_prefix): 
    # Returns the command line parameters for subprocess to use 
    # mencoder to create a movie 
    return ['mencoder', 'mf://%s*.png' % frame_prefix, '-mf', 
     'type=png:fps=%d' % fps, '-ovc', 'lavc', '-lavcopts', 
     'vcodec=%s' % codec, '-oac', 'copy', '-o', fname] 

def _make_movie(self, fname, fps, codec, frame_prefix, cmd_gen=None): 
    # Uses subprocess to call the program for assembling frames into a 
    # movie file. *cmd_gen* is a callable that generates the sequence 
    # of command line arguments from a few configuration options. 
    from subprocess import Popen, PIPE 
    if cmd_gen is None: 
     cmd_gen = self.ffmpeg_cmd 
    command = cmd_gen(fname, fps, codec, frame_prefix) 
    verbose.report('Animation._make_movie running command: %s'%' '.join(command)) 
    proc = Popen(command, shell=False, 
     stdout=PIPE, stderr=PIPE) 
    proc.wait() 
+0

あなたは正しいです。実際には、私はffmpeg instaledがあったが、それは私のpythonのパス上ではなかった... これは[スタックオーバーフローの質問](http://stackoverflow.com/questions/9256829/how-can-i-save-animation-artist-animation/9281433#9281433)私はすでにそのヒントをくれました! ご協力いただきありがとうございます! – carla

関連する問題