1

matplotlibを介してpngを作成しようとしていますが、次のようになります。

[Errno 2] No such file or directory

同じコードが単体テストで機能します。print_figure通話中

# creates a canvas from figure
canvas = FigureCanvasAgg(fig)
filename = "directory" + os.sep + name_prefix + ".png"
# saves figure to filesystem in png format
canvas.print_figure(filename)

許可の問題になる可能性があると思いますが、同じコードがmanage.py test

ありがとう

4

1 に答える 1

3

完全修飾パス名を使用することをお勧めします。例:django設定からMEDIA_ROOTを決定し、グラフのサブディレクトリが存在することを確認するコードのスニペットを記述して、そこに画像を保存することができます。

現在のコードは、「現在の作業ディレクトリ」で適切な名前のサブディレクトリを見つけることに依存しているようです。「現在の作業ディレクトリ」は厄介なものです。テスト、開発、本番環境では異なります。

# import settings
from django.conf import settings
...
# ensure that a subdirectory with the appropriate name exists
if not os.path.exists(directory):
    os.makedirs(directory)

# save the plots
canvas = FigureCanvasAgg(fig)
filename = settings.MEDIA_ROOT + os.sep + directory  + os.sep + name_prefix + ".png"
# saves figure to filesystem in png format
canvas.print_figure(filename)
...

保存する実際の場所は、ニーズによって決定する必要があります。重要なポイントは、完全修飾パスを使用し、イメージを保存する前にディレクトリ/サブディレクトリの存在を確認することです。

于 2012-10-11T19:50:12.430 に答える