する質問をすることでしか得られない、回答やアドバイスがある。23pyinstallerを用いてpythonスクリプトをアプリ化しようとしています。そこで自分がアプリ化するプログラム内ではcsvファイルを用いるのですが、csvファイルをアプリ化した後に読み込む方法がわかりません。pyinstallerでアプリ化する前はcsvファイルを読みこみプログラムを実行できるのですが、アプリ化した後では実行する事ができません。自分の作っているプログラムのディレクトリ構成は以下の通りです。file|-main.py|-sub.py|-sub2.py|-*.csvmainスクリプトの中でsub.pyとsub2.pyをimportして使っており、sub.py内でcsvファイルを読み込ませて動作を行なっています。csvファイルをsub.pyにおいて読み込ませるには下記のように記述しており、カレントディレクリからそのまま読み込むことを想定しています。f:pyinstallerの性質から、main.pyのみを指定して下記のように入力してアプリ化させました。コンパイルは以下のように行なっています。main.pyこれでdistファイル内に生成されたアプリを実行しようとすると何もおこらないため、アプリの「パッケージの内容を表示」させ、その中にあるUnix実行ファイルのmainを開いてやると、次のエラーがまず表示されました。pyi_rth__tkinterこれと同様に、tclがtkに変わったエラーも表示されたので、MacOS下にtclとtkという名前のファイルを作ったところこのエラーは消えました。次に出てきたエラーがcsvファイルの読み込みに関するもので以下のエラーが表示されました。'*.csv'*.csvファイルを読み込むことができていないようだったので様々なディレクトリにcsvファイルを配置したのですが、このエラーは消えませんでしたsub.py内で同じ階層のディレクトリからcsvファイルを読み込むようにしていることが原因でしょうか。どのように書き換えればcsvファイルをアプリでも読み込む事ができるようになるでしょうか。pythonは3.6.6を使用しています。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。17:12ディレクトリ構成とファイル読み込みが失敗するコード、コンパイル方法、実行方法を質問に追記お願いします。ディレクトリ構成とファイル読み込みが失敗するコード、コンパイル方法、実行方法を質問に追記お願いします。18:04修正依頼ありがとうございます。質問に追記させていただきました。修正依頼ありがとうございます。質問に追記させていただきました。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+1下記のようにsubからファイルを読み込ませると、うまくmain.pyの内容を読み込めてるんですよね。このあたりの確認から初めてみてはどうでしょうか。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。19:25回答ありがとうございました。確かに上のプログラムを実行してみたところmain.pyが表示されました。自分の作成したプログラムではsub.pyの中でcsvファイルを読み込んでそれを用いてsub.pyの中で処理を施すというものなのですが、sub.pyの中身をmain.pyに組み込んでみたところ、エラーメッセージが少なくなったのですが結局csvファイルは読み込めないようです。test回答ありがとうございました。確かに上のプログラムを実行してみたところmain.pyが表示されました。自分の作成したプログラムではsub.pyの中でcsvファイルを読み込んでそれを用いてsub.pyの中で処理を施すというものなのですが、sub.pyの中身をmain.pyに組み込んでみたところ、エラーメッセージが少なくなったのですが結局csvファイルは読み込めないようです。21:33返信ありがとうございます。main.pyで実行できるスクリプトです。csvファイルを読み込むときのパスとかの問題かと思っているのですが、csvファイルをどのように読み込ませればいいかわかりません。返信ありがとうございます。main.pyで実行できるスクリプトです。csvファイルを読み込むときのパスとかの問題かと思っているのですが、csvファイルをどのように読み込ませればいいかわかりません。21:35教えていただいたmainとsubはどのようにcsvファイルの読み込みと関係させればよいのでしょうか。教えていただいたmainとsubはどのようにcsvファイルの読み込みと関係させればよいのでしょうか。09:32上記の内容は、次にmain.pyの階層にsample.csvを作ってそれを読み込めるか確認してみる。うまくいけばさらに実際の条件に近づけていって、どこで失敗するかを探る、という具合です。上記の内容は、次にmain.pyの階層にsample.csvを作ってそれを読み込めるか確認してみる。うまくいけばさらに実際の条件に近づけていって、どこで失敗するかを探る、という具合です。16:36返信ありがとうございます。sub.py└──sample.csvというような階層を作り、main.pyを実行したところ、csvファイルは読み込まれており、csvファイルの内容が表示されました。main.pyとしてアプリ化して、distファイル内に生成されたアプリを実行しようとすると何もおこらないため、アプリの「パッケージの内容を表示」させ、その中にあるUnix実行ファイルのmainを開いてやると、次のエラーが表示されました。'sample.csv'やはりアプリ化するとcsvファイルは読み込まれていないようでした。返信ありがとうございます。いうような階層を作り、main.pyを実行したところ、csvファイルは読み込まれており、csvファイルの内容が表示されました。してアプリ化して、distファイル内に生成されたアプリを実行しようとすると何もおこらないため、アプリの「パッケージの内容を表示」させ、その中にあるUnix実行ファイルのmainを開いてやると、次のエラーが表示されました。アプリ化するとcsvファイルは読み込まれていないようでした。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。回答ありがとうございます。*.csv|--dist--main.appとmainのアプリができた場合どのようにcsvファイルを配置させれば良いのでしょうか。回答ありがとうございます。mainのアプリができた場合どのようにcsvファイルを配置させれば良いのでしょうか。返信ありがとうございます。先ほどお伝えしたものと自分の階層が異なっていました。*.csvという階層になっていて、mainがsubをimportして使い、subの中でcsvファイルを使うという形式になっています(sub.pyの中でpath="resource/*.csv"として読み込ませている)。*.csvcsvファイルが見当たらないというエラーがやはり出てしまいました。このことはmainがsubをimportして使っていることと関係しているでしょうか。返信ありがとうございます。先ほどお伝えしたものと自分の階層が異なっていました。いう階層になっていて、mainがsubをimportして使い、subの中でcsvファイルを使うという形式になっています(sub.pyの中でpath="resource/*.csv"として読み込ませている)。csvファイルが見当たらないというエラーがやはり出てしまいました。このことはmainがsubをimportして使っていることと関係しているでしょうか。返信ありがとうございます。エラーが出た場所に配置したのですがそれでも変わりませんでした。今回エラーが吐き出されたpythonスクリプトが"pyimod03_importers.py"であり、その場所が/PyInstaller/loader/pyimod03_importers.py"だったのですが、これを実行して見たところ、以下のエラーが吐き出されていました。'_MEIPASS'これは今回のcsvファイルが読み込めないことと関係しているでしょうか。返信ありがとうございます。エラーが出た場所に配置したのですがそれでも変わりませんでした。これを実行して見たところ、以下のエラーが吐き出されていました。これは今回のcsvファイルが読み込めないことと関係しているでしょうか。18:02それはCSVファイルが読めない、というのとはまた別のエラーです。ファイルはきちんと読んでるのでは。それはCSVファイルが読めない、というのとはまた別のエラーです。ファイルはきちんと読んでるのでは。_MEIPASSってのはない、というエラーに見えますが。そのエラーの該当行をチェックしてみては。_MEIPASSってのはない、というエラーに見えますが。そのエラーの該当行をチェックしてみては。foundというエラーが出てしまいました。いうエラーが出てしまいました。csvファイルは読み込めていないようですキャンセル完了するlink0PyInstallerは--onefileオプションを指定したときと、指定していないときで挙動が違います(挙動と言うより、exeファイルのパスが異なります)。"frozen")で確認できます)。PyInstallerのonefileを使っていない場合、Path(sys.argv[0]).parentでexeのフォルダパスを取得できます。onefileオプションを使っている場合、Path(sys.prefix)でexeのフォルダパスを取得できます(onefileオプションを使った場合、Tempフォルダに一度ファイルを展開してから実行することになるため)。Pathなどとしてインポート済みであるものとします。リソースパスの取得処理を見直されると良いかと思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。15:58回答ありがとうございます。自分はonefileを使用しないで行なっています。自分は下記のようなディレクトリ構造でプログラムを書いています。examファイル|--main.py|--sub.py|--*.csv内容は、mainスクリプトが、同じディレクトリ内にあるcsvファイルを読み込み動作を行うsubスクリプトをimportして使うという形になっています。この場合、exeのフォルダパスを取得するPath(sys.argv[0]).parentをsubスクリプトに書いてあげればいいのでしょうか。Pyinstallerを使用した後は、distファイル内にアプリ化されたものと他の諸々が入っているファイルが出来上がると思うのですが、ここでのexeのフォルダパスとはdistというディレクトリのパスということでしょうか。回答ありがとうございます。自分はonefileを使用しないで行なっています。自分は下記のようなディレクトリ構造でプログラムを書いています。内容は、mainスクリプトが、同じディレクトリ内にあるcsvファイルを読み込み動作を行うsubスクリプトをimportして使うという形になっています。この場合、exeのフォルダパスを取得するPath(sys.argv[0]).parentをsubスクリプトに書いてあげればいいのでしょうか。Pyinstallerを使用した後は、distファイル内にアプリ化されたものと他の諸々が入っているファイルが出来上がると思うのですが、ここでのexeのフォルダパスとはdistというディレクトリのパスということでしょうか。exeのフォルダパスを取得するPath(sys.argv[0]).parentをsubスクリプトに書いてあげればいいのでしょうか。sys.argv[0]の値はsubで使用してもmainで使用しても変わらないですから、どちらでも良いです(エントリポイントとなるソースファイルの値(PyInstaller利用後はexeのあるフォルダパス)となります)。どこかでメソッドを定義しておくと良いでしょう。以下は上記の条件で、親フォルダのPathを取得する例です(すみません、上記では`Path(sys.argv[0]).parent`と書きましたが`Path(sys.argv[0])`の誤りでした)。distファイル内にアプリ化されたものと他の諸々が入っているファイルが出来上がると思うのですが、ここでのexeのフォルダパスとはdistというディレクトリのパスということでしょうか。exeのフォルダパスを取得するPath(sys.argv[0]).parentをsubスクリプトに書いてあげればいいのでしょうか。sys.argv[0]の値はsubで使用してもmainで使用しても変わらないですから、どちらでも良いです(エントリポイントとなるソースファイルの値(PyInstaller利用後はexeのあるフォルダパス)となります)。どこかでメソッドを定義しておくと良いでしょう。以下は上記の条件で、親フォルダのPathを取得する例です(すみません、上記では`Path(sys.argv[0]).parent`と書きましたが`Path(sys.argv[0])`の誤りでした)。distファイル内にアプリ化されたものと他の諸々が入っているファイルが出来上がると思うのですが、ここでのexeのフォルダパスとはdistというディレクトリのパスということでしょうか。gpu版の設定がうまくいかない解決済vlcとPyQt5を用いたプログラムのPyInstallerによるexe化がうまくいきません。頂いたご意見への回答は行っておりません。