質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

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

Q&A

解決済

4回答

3659閲覧

Pythonの実行ファイル化がうまくいきません

Syo-PT

総合スコア22

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

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

0グッド

0クリップ

投稿2021/05/30 17:33

編集2021/05/31 17:40

前提・実現したいこと

Pythonを利用して選択したcsvファイルの指定した列の抽出・新規保存を行おうと思っています。
Spyder上ではうまく作動し、指定した列の抽出・新規保存も可能です。
しかしPyinstallerで実行ファイル化し、実行しても起動がされません。

発生している問題・エラーメッセージ

Spyder上では起動するため、エラーメッセージはありません。

該当のソースコード

Python3.8

1import tkinter as tk 2from tkinter import filedialog 3import pandas as pd 4import os 5 6tki=tk.Tk() 7tki.geometry("350x200") 8 9def btn_click(): 10 type = [("all file","*")] 11 path = os.getcwd () 12 file_path = filedialog.askopenfilename(filetypes = type, initialdir = path) 13 df = pd.read_csv(file_path, engine="python",usecols=[1,7,19,20,31,32,44,45,46,47,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,142,143,144,148,149,150,154,155,156,160,161,162,166,167,168,172,173,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192]) 14 print(df) 15 16 print(file_path) 17 file_path_name = os.path.splitext(file_path)[0] 18 print(file_path_name) 19 20 new_file_path = file_path_name + "_a" +".csv" 21 print(new_file_path) 22 df.to_csv(new_file_path, index=False) 23 df = pd.read_csv(new_file_path, engine="python",usecols=[1,7,19,20,31,32,44,45,46,47,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,142,143,144,148,149,150,154,155,156,160,161,162,166,167,168,172,173,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192]) 24 print(df) 25 26btn=tk.Button(tki,text='参照',command=btn_click) 27btn.place(x=140, y=100) 28 29tki.mainloop() 30

試したこと

Pyinstallerがうまく機能していないのかと考え、ネット上のサンプルコードで実行ファイル化したところ、サンプルコードは実行することができました。
そのため、Pyinstallerの問題ではなく、私が作成したコードの問題かと思うのですが、どのような問題が考えられますでしょうか?
煩雑なコードで申し訳ありませんが、ご教授よろしくお願いいたします。

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

INTEL MKL ERROR: dlopen(/private/var/folders/fn/g4g75ypx67b23_mncgk1bycw0000gn/T/_MEIes3DJq/libmkl_intel_thread.1.dylib, 9): Library not loaded: @rpath/libiomp5.dylib Referenced from: /private/var/folders/fn/g4g75ypx67b23_mncgk1bycw0000gn/T/_MEIes3DJq/libmkl_intel_thread.1.dylib Reason: image not found. Intel MKL FATAL ERROR: Cannot load libmkl_intel_thread.1.dylib.
(base) ユーザー名@ユーザー名Mac-mini ~ % pyinstaller /Users/ユーザー名/.spyder-py3/GUI.py --add-binary “/Users/ユーザー名/.spyder-py3/libmkl_intel_thread.1.dylib:/Users/ユーザー名/.spyder-py3"
Security-Alert: try to store file outside of dist-directory. Aborting. '/Users/ユーザー名/.spyder-py3/libmkl_intel_thread.1.dylib'

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

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

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

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

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

teamikl

2021/05/30 21:26 編集

コードのレイアウトが崩れているので編集で修正をお願いします。 確認点ですが、 - pyinstaller を実行した時のオプション引数 - OS 環境 (pyinstaller のconsole関連オプションが win/mac で異なります) > サンプルコードは実行することができました。 サンプルコードは、pandas を用いたものですか? > Spyder上では起動するため、エラーメッセージはありません。 pyinstaller で作成された実行ファイルの実行後にエラーメッセージはありませんか? もしエラーメッセージ自体が出てない場合は、 出力が無効になってる可能性があるので、 「意図的にエラーが出るはずのコードを試して」みて、 「エラーが期待通りに出る事」を確認してください。 エラーメッセージ自体が無効で出力されてない場合、 pyinstaller 実行時にconsole 関連オプションを有効にして、 エラー原因を調べる必要があります。
Syo-PT

2021/05/30 23:09

ご回答ありがとうございます。 オプション引数は以下のことでよろしいでしょうか? --onefile --noconsoleで作成をしています。 OSはmacを使用しています。 > サンプルコードは、pandas を用いたものですか? サンプルコードはpandasを用いていません。 > pyinstaller で作成された実行ファイルの実行後にエラーメッセージはありませんか? エラーメッセージ自体が出ていません。 >「意図的にエラーが出るはずのコードを試して」みて、 「エラーが期待通りに出る事」を確認してください。 こちらに関しては少し時間がかかってしまうかもしれませんので、確認出来次第、再度投稿させていただきたく思います。
teamikl

2021/05/31 00:44

--noconsole が付いている為、エラーが表示されないので 「--noconsole」オプションを外し、 作成された実行ファイルを「Terminalから」実行して見て下さい。 https://pyinstaller.readthedocs.io/en/stable/when-things-go-wrong.html#figuring-out-why-your-gui-application-won-t-start >> サンプルコードは、pandas を用いたものですか? > サンプルコードはpandasを用いていません。 可能性として高そうなのは、pandas を梱包する際の問題だと思います。 バグだったりする事もあるので、ここはエラーメッセージがないと詳細は解りません。 バグ報告からエラー内容を検索すると解決策が見つかることも有ります。 https://github.com/pyinstaller/pyinstaller/issues?q=is%3Aissue+pandas
Syo-PT

2021/05/31 06:49

ご教授ありがとうございます。 おっしゃる通り、開いたりするときのエラーかな?と感じました。 出力結果を補足情報に記載させていただきました。 もしお時間がありましたら、再度ご教授いただけましたら幸いです。 (当然ですが、当方でも解決策を探し続けています。)
teamikl

2021/05/31 08:14

エラーから読み取れる情報としては、 「libmkl_intel_thread.1.dylib」ファイルが読み込めなかったということなので、 動作確認 - システム内に該当の dylib ファイルが無いかを探す  (spyder で起動できているなら、何処かにあるはずですが、   無い場合は、別ケースで KURORO さんがコメントで指摘されてる方の問題かもしれません) - --onefile オプションを外して、生成物内のファイル一覧を確認できるようにする(デバッグの為) - dylib ファイルを実行ファイルの場所にコピーして試す 解決策としては、毎回手動でファイルコピーするのは手間なので pyinstaller の hook により、必要なファイルがコピーされるように 設定を構成します。
Syo-PT

2021/05/31 15:28

ご教授ありがとうございます。 実行ファイルの場所に「libmkl_intel_thread.1.dylib」を移して実行しましたが、追記情報のようなエラーとなってしまいました。 お忙しい中申し訳ありませんが、再度ご指導いただけますと幸いです。 よろしくお願いいたします。
teamikl

2021/05/31 16:35

--onefile オプションを外して、実行ファイルを生成 手作業で dylib ファイルをコピーしてから、実行ファイルを実行した時はどうなりましたか? エラーは pyinstaller コマンド実行時だと思いますが、 先に --onefile を外して実行して、必要なファイルが揃ってるかを見て、 ファイルを含める事で解消できる問題かどうかの確認を取った方が良いです。 一点見落としてたのですが、「libiomp5.dylib」ファイルも確認が必要です。 ファイルはあるが依存ライブラリがなくて、読み込みが失敗というケースもあるので。 権限関連については、build, dist デリレクトリが生成される場所の 親ディレクトリの権限を確認してください。 確認: --add-binary 無しで実行した場合はエラーにはならない?
Syo-PT

2021/05/31 18:03

pyinstaller /Users/ユーザー名/.spyder-py3/xxx.py で作成した場合には、「INFO: Building COLLECT COLLECT-00.toc completed successfully.」となります。 その後、作成されたdist内を確認すると「xxx.appもしくはxxx.exe」ファイルは見当たりませんが、「xxx」というunix実行ファイルはあります。 そのunix実行ファイルを起動すると一番初めの補足情報と同様のエラーが表示されてしまいます。 またunix実行ファイルがある場所に「libmkl_intel_thread.1.dylib」「libiomp5.dylib」も含まれていました。 > 権限関連については、build, dist デリレクトリが生成される場所の 親ディレクトリの権限を確認してください。 親ディレクトリの権限はシステムになっています。 (このような回答でよろしいでしょうか...?) 要領の得ない回答ばかりで大変申し訳ありません。
guest

回答4

0

ベストアンサー

念の為に確認したい点ですが、KUROROさんコメントの
>pythonの実行環境はcondaを使っていますでしょうか?

については、Anaconda で環境を作っている点は肯定なのでしょうか?
(conda 環境はインストールされてるが、
pyinstaller を別環境で実行してないかの確認)

ファイルがあるが、読み込みが失敗の場合
残り考えられるのは、ライブラリの探索PATH くらいです。

またunix実行ファイルがある場所に「libmkl_intel_thread.1.dylib」「libiomp5.dylib」も含まれていました。

ここも確認ですが、「--onefile オプションは外して」試した場合で間違いありませんか?


原因絞れてないのですが、github のバグ報告で調べた感じでは
pandas -> pyinstaller -> anaconda -> numpy -> MKL とタライ回しにされました。

pyinstaller コマンドを実行したときの依存ライブラリ捜査では、
numpy が動的にロードするライブラリを把握しきれないらしいです。

解決策

MKL を使わない環境構築 (どちらか片方で解決との報告あり)

  • conda install nomkl numpy pandas
  • conda install -c conda-forge numpy pandas
  • Anacondaを使わず pip で環境構築 ※ 注意点: conda 環境と混ぜない事

新規に環境構築して試してください。

MKL を有効にしたい場合は、
ライブラリのロードの問題を、より詳細に調べて解消する必要があります。


他の解決策

投稿2021/06/01 08:30

編集2021/06/01 09:00
teamikl

総合スコア8664

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

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

Syo-PT

2021/06/01 10:54

>pythonの実行環境はcondaを使っていますでしょうか? condaを使っています。 >ここも確認ですが、「--onefile オプションは外して」試した場合で間違いありませんか? そうです。オプションは外して実行しています。 新規に環境構築(conda install nomkl numpy pandas)を行い、pyinstaller xxx.pyを実行しました。 その結果、INFO: Building COLLECT COLLECT-00.toc completed successfully.と表示されますが、その前にERROR: Can not find pathというメッセージが大量に出てしまいました。 記載していただいたURLを参考にすると、(これまでも何度もご指摘いただいていますが)pandasとpyinstallerの相性が良くないのかな? と感じました。 作成したプログラムをpythonが入っていないパソコンで利用する他の方法がございましたら、そちらも検討したいと思います。 お手数おかけして申し訳ありません。
Syo-PT

2021/06/01 10:55

mklのバージョン変更はこれから試してみます。 ありがとうございます。
teamikl

2021/06/01 11:22

> ERROR: Can not find pathというメッセージが大量に出てしまいました。 Pyinstaller can't find dynamically linked libs for Mac OS X Big Sur Beta #5107 https://github.com/pyinstaller/pyinstaller/issues/5107 この様な感じでしょうか。解決策として書かれてることは、 pyinstaller のブートローダーを再コンパイル~等なので、 根が深そうな問題ですね。 バージョン等も絞って調べたほうが良さそう、 環境構築をどの様に行ったか等も影響しそうです。 多分、--onefile オプションを有効にする際に また別問題に合うかもしれませんが、 ここはデバッグ中は問題点を探すためには切っておいたほうが良いです。 (onefile の場合は、実行時に別の場所に展開されるため、 後から dylib ファイルをコピーしても有効になりません。 hookでビルド時に含まれるように対応します) >pandasとpyinstallerの相性が良くないのかな? バージョンが新しすぎると pyinstaller 側が対応してないことはありますが、 pandas 自身ではなく、依存ライブラリの問題みたいです。 numpy でも同樣の問題が報告されてました。
Syo-PT

2021/06/01 15:12

> この様な感じでしょうか。解決策として書かれてることは、 pyinstaller のブートローダーを再コンパイル~等なので、 根が深そうな問題ですね。 このように表示されていました。 色々ご教授いただきありがとうございます。 mklのバージョンダウンがうまくいかないため、また明日試してみようと思います。 調べていたらIntel macとM1macでは多少異なるのか? という疑惑が出てきました。当方が使用しているのはM1macであるため、その可能性もあるのでしょうか...
Syo-PT

2021/06/01 16:29

この度は大変お世話になりました! なぜかはよくわからないのですが、windowsでpyinstallerを実行したら無事に作成することができました!!! ど素人の私に懇切丁寧にご指導くださいまして、本当にありがとうございました。 あとは作成した実行ファイルを職場のPCで実行できるか・起動が遅いので軽量化の2点を試していきたいと思います。 本当にありがとうございました!
teamikl

2021/06/01 17:18

クロスコンパイルできたとかではないと思いますが、 動かしたい対象の環境は windows で大丈夫なのですか? 成功したと動作報告があるバージョンに環境を合わせるのが、 対応としては無難そうです。
Syo-PT

2021/06/01 21:58

動かしたい環境はwindowsです。 バージョンを合わせるのも検討していきたいと思います。
guest

0

pandasが呼び出しているnumpyが使用しているlibmkl_intel_thread.1.dylibをPyinstallerが実行ファイルに入れるのを失敗しています。

pythonで以下を実行して下さい。
import numpy
print(numpy.path)

これで表示されるディレクトリの下の.libの下にlibmkl_intel_thread.1.dylibが入っている可能性が高いのですが、私はMacユーザではないので間違っているかもしれません。
無い場合は、ファイルシステムを検索してlibmkl_intel_thread.1.dylibを探してください。

次にPyinstallerを実行するときに、--add-binaryオプションで、上記のlibmkl_intel_thread.1.dylibのフルパスを指定して実行ファイルを作成してください。

これで動くと思うのですが、ダメだったらどういうエラーになったかを教えて下さい。

投稿2021/05/31 11:20

ppaul

総合スコア24666

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

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

Syo-PT

2021/05/31 17:41 編集

ご教授ありがとうございます。 実行した際のコマンドとエラーを追記情報に記載させていただきます。 お時間がありましたら、再度ご教授いただきたく思います。 よろしくお願いいたします。
ppaul

2021/06/01 04:03

libmkl_intel_thread.1.dylib はどこにあったのでしょうか?
Syo-PT

2021/06/01 05:23

pyinstallerを実行した際のdist内と.lib内にありました。 import numpy print(numpy.path) こちらを実行すると、 raise AttributeError("module {!r} has no attribute " AttributeError: module 'numpy' has no attribute 'path' このようなエラーが表示されてしまいました。 上記エラーに関して色々検索してみたのですが、いまいち理解できませんでした... お手数おかけして申し訳ありません。
guest

0

おはようございます。

問題文読ませていただきました。

どこまでうまくいっているのか、問題の切り分けを行いたいので、以下を確認いただけますか?
・Tkinterにてボタンクリックできる動作まで(command optionを使って)はうまくいっているのか?
・filedialogを使って、ファイル選択して、レスポンスにファイルパスの取得はうまくいっているのか?
・read_csvを使ったのちに、pandasを使ったデータ取得はできているのか?
・to_csvはうまくいくのか?

ご確認のほど、よろしくお願いいたします。????‍♂️

投稿2021/05/30 20:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Syo-PT

2021/05/30 22:38

おはようございます。 ご回答ありがとうございます。 Spyder上では全てうまくいっているので、to_csvにて新規csvファイルの作成も出来ます。 しかし、実行ファイル化し、.exeファイルを作成後、同ファイルを開くと起動すらしない状態です。 これで伝わりますでしょうか…?
退会済みユーザー

退会済みユーザー

2021/05/30 22:51 編集

なるほどです。 一度小規模単位で動くか確認いただきたいです。問題切り分けのためにと考えております。 以下の記事のように新しくtkniterを作成いただき、pyinstallerの実行&確認のほどよろしくお願いいたします。????‍♂️ ・https://teratail.com/questions/253819 ↑ うまくいっているみたいですね。失礼しました。
退会済みユーザー

退会済みユーザー

2021/05/30 22:54 編集

以下のように実行いただき、出力を確認いただくことは可能でしょうか?????‍♂️(恐らく、ファイルパス周りで落ちている予感がします。) pyinstaller xxx.py --onefile --debug all <参考> ・https://qiita.com/q_masa/items/93872744f63ed97a54d8
Syo-PT

2021/05/30 23:45

ご教授ありがとうございます。 pyinstaller xxx.py --onefile --debug allにて実行をしました。 参考URLのようなエラーメッセージは見当たりませんでした。 (見つけられていないだけかもしれません...) 最終行は以下のようになっていました。 INFO: Building EXE from EXE-00.toc completed successfully.
退会済みユーザー

退会済みユーザー

2021/05/31 04:00

teamiklさんのご指摘の通りに、エラーを確認して次のアクションを判断する形になりそうです。 お時間かかるかもしれませんが、ご確認のほど、よろしくお願いいたします????‍♂️
Syo-PT

2021/05/31 06:51

ご返信ありがとうございます。 teamiklさんのご指導を参考に、補足情報にエラーであろう出力結果を記載しました。 もしお時間がありましたら、再度ご教授いただけましたら幸いです。
退会済みユーザー

退会済みユーザー

2021/05/31 07:30

記載のほど、ありがとうございます。 pythonの実行環境はcondaを使っていますでしょうか? condaの場合、 conda install -c intel mkl を実行するとうまくいくかもしれません。 <参考> ・https://github.com/pytorch/pytorch/issues/4989
teamikl

2021/05/31 08:33 編集

エラー自体は該当してそうですが、 pytorch の報告は pyinstaller が関係してないので、 この場合であれば、spyder での実行時も同様のエラーになるはずです。 もう1ステップ問題の切り分けが必要で - 環境にライブラリがない - pyinstaller 後の環境にライブラリがコピーされていない 後者の場合は、pyinstaller の開発のissues で、 情報を探した方がいいと思います。
Syo-PT

2021/05/31 15:32

お二人ともありがとうございます。 KURORO様 > conda install -c intel mkl を実行するとうまくいくかもしれません。 試しましたがうまくいきませんでした。すみません。 teamikl様 > - 環境にライブラリがない - pyinstaller 後の環境にライブラリがコピーされていない こちらはまだ検討できていないため、検討させていただきます。 情報を追記させていただきましたので、再度ご教授いただけますと幸いです。 よろしくお願いいたします。
guest

0

みなさま、ご教授ありがとうございました。
Pythonを使い始めて1週間程度のど素人の私に懇切丁寧にご指導くださいまして、感謝しかありません。
windowsでpyinstallerを実行した結果、作成することができました。
最終的には統計検定・グラフ作成などまで一括でできるプログラムを作りたいと思っていますので、またご質問させていただくかと思います。(RやSPSSなどでは利用する環境が限られてしまう・調べながらじゃないと時間がかかってしまうので、業務負担を減らすため)
その時はどうぞよろしくお願いいたします。

この度は本当にありがとうございました!!

投稿2021/06/01 16:32

Syo-PT

総合スコア22

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

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

退会済みユーザー

退会済みユーザー

2021/06/01 17:08

お疲れ様でした〜。 またわからないことがありましたら、気軽にご相談ください〜
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問