pythonで簡単なプログラムを開発し、このプログラムをpythonの環境構築をしてない人でも動かせるようにPyinstallerでexe化したいと考えています。
構成は以下のような形です。
|- /utils
| |- /methods
| |- hoge2.py
| |- hoge.py
|- main.py
py
1# main.py 2from utils import hoge 3 4...
py
1# hoge.py 2from methods import hoge2 3 4...
まずはterminalでpyinstaller main.py --onefile
を実行し、exe化したのち、dist
配下に作成されたmainファイルをクリックして実行すると、terminalに以下のようなエラーがでて実行できませんでした。
もし解決方法をご存知の方がいらっしゃいましたら教えていただきたいです。
Traceback (most recent call last): File "main.py", line 1, in <module> File "/opt/anaconda3/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module exec(bytecode, module.__dict__) File "utils/hoge.py", line 1, in <module> ModuleNotFoundError: No module named 'methods' [18123] Failed to execute script main
PyInstaller で exe 化しないで、直接 main.py を実行しても、エラーになりませんか?
当方の環境 (Windows10, Python3.9) では、main.py のあるディレクトリで main.py を実行すると、hoge.py で methods をインポートできないので、同じようなエラーになります。
私はエラーになりませんでした
確認させて下さい、基準となるディレクトリ (仮に /main とします) に、main.py と /utils があり、/utils に hoge.py と /methods があり、/methods に hoge2.py があるという認識で間違いないでしょうか?
/main をカレントディレクトリとして、main.py を実行した場合、hoge.py はインポートできますが、hoge.py で "from methods" としても、カレントディレクトリは /main のままなので、インポートに失敗するはずですが、私が何か勘違いしてますでしょうか。
main.py はどこで、どのように実行していますか?
あなたの回答
tips
プレビュー