質問するログイン新規登録
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1395閲覧

Pyinstallerでexe化するとsavefigで保存できない

d-hayahsi

総合スコア21

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/05/08 02:49

0

0

実現したいこと

Matplotlibのsavefig関数でPDFファイルで保存したいのですが、
Pyinstallerでexe化したファイルを実行してもファイルが出力されません。
ファイルの拡張子が.ipynbや.pyの時は出力されました。

調べてみたところ、https://github.com/pyinstaller/pyinstaller/issues/5356が
参考になるかと思いましたが、分からないのでご教示頂けないでしょうか。

該当のソースコード

Python

1234plt.savefig("ファイル名.pdf") 5plt.show()

補足情報(FW/ツールのバージョンなど)

conda version : 23.1.0
python : 3.10.8
pyinstaller : 5.7.0
matplotlib : 3.6.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/05/08 02:51

そのEXEファイルを実行したときに、どこにそのファイルが保存されるつもりなんでしょうか。 そして、その場所は書き込みできるところなのか、ユーザとかパーミッションがどうなってるのかチェックしてみよう
jbpb0

2023/05/08 04:09

> plt.savefig("ファイル名.pdf") が無い場合は、(ファイルにではなくパソコンのモニターに)正常に表示されるのでしょうか?
d-hayahsi

2023/05/08 04:24

y_waiwai様 コメントありがとうございます。 出力したいファイルはexeファイルと同じフォルダになります。 またそのフォルダの権限を確認しましたが、フルコントロールになっております。
jbpb0

2023/05/08 04:24

> https://github.com/pyinstaller/pyinstaller/issues/5356 が参考になるかと思いましたが、分からない https://github.com/pyinstaller/pyinstaller/issues/4968#issuecomment-662075970 に書かれてるように、exe実行に必要な共有ライブラリ(上記webページの場合は「libiomp5md.dll」)がexe実行時に見つかるようにする(exeと同じディレクトリに置く等)、ということです (その解決策が、この質問に該当するかどうかは分かりませんが)
jbpb0

2023/05/08 04:39 編集

> 出力したいファイルはexeファイルと同じフォルダ 下記コードをpyinstallerでexe化してから実行して、カレントディレクトリがどこかを確認してください import os print(os.getcwd()) カレントディレクトリは「exeファイルと同じフォルダ」でしょうか? 【追記】 > plt.savefig("ファイル名.pdf") の「ファイル名.pdf」を絶対パスで書いたら、どうなりますでしょうか?
d-hayahsi

2023/05/08 04:45

jbpb0様 数多のコメントありがとうございます。 私の見落としがあり、exeファイルを実行した時に下記エラーを発見しました。 ModuleNotFoundError: No module named 'matplotlib.backends.backend_pdf そこで、コードに「import matplotlib.backends.backend_pdf」を追記したところ 問題なく出力されました。 ご対応ありがとうございました。
jbpb0

2023/05/08 06:06

> exeファイルを実行した時に下記エラーを発見しました。 ModuleNotFoundError: No module named 'matplotlib.backends.backend_pdf そこで、コードに「import matplotlib.backends.backend_pdf」を追記したところ 問題なく出力されました。 pyinstallerでexe化して無い場合は、上記無しで大丈夫なのでしょうか? > ファイルの拡張子が.ipynbや.pyの時は出力されました。
d-hayahsi

2023/05/08 06:07

> pyinstallerでexe化して無い場合は、上記無しで大丈夫なのでしょうか? 大丈夫でした。
guest

回答1

0

自己解決

exeファイルを実行した時に下記エラーを見落としていました。

ModuleNotFoundError: No module named 'matplotlib.backends.backend_pdf

そこで、コードに下記を追記したところ問題なく出力されました。

import matplotlib.backends.backend_pdf

投稿2023/05/08 05:51

d-hayahsi

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問