やあ、お久しぶりです。
なんだかんだで色々やってたら月日が流れてました。
ブログってそんなもんですよね。
最近はpythonでプログラミングをやってるのですが
環境を入れるのはめんどくさい、けど別のPCでpythonを実行したいって時に
pythonをexeにして実行したりしてます。
pythonのexe化はPyInstallerでexe化してるのですが、ハマったのでメモ代わりに。
ちなみにPyInstallerの使い方などは以下のページを参考に
PyInstallerの導入は気が向いたら解説します。
・発生した問題と試した事
今回、PyInstallerでexe化したのですが、pythonの作成環境は
・anaconda(python3.8)
・eclipse2020
で作成していました。
今の所動いてますよ、どこでバグ出るか分からないから怖いけど。。
自分が使う用だからそこは勘弁。。
多分偉い人がpyinstallerをpython3.8でも動く様にしてくれてると思ってる。。
そしてハマった内容が以下のページ
[Python PyInstaller で急に No module named pyinstaller]
[Pyinstallerを使ってPythonコードから生成した実行ファイルについて、実行時エラーModuleNotFoundErrorを回避]
コンパイルして実行するとNo module namedで実行されず
これには苦戦しました。。
exe化しているpythonファイルは主にseleniumや独自モジュールを読み込ませてたのですが
独自モジュールの方がNo module namedとなり起動しても実行されない状態でした。
上記リンクの内容のspecファイルを編集してコンパイルし直しも試しましたが上手くいきませんでした。
・結論と解決方法
デバッグログを見たりしてやっていましたが
以下ページの
[No module named when using PyInstaller]
Wow, this helped, tnx. Though I had to make my main script folder a python package by creating __init__.py in the same folder. Otherwise strange things would happen depending on from where the executable was run. Anything from failing relative import to not succeeding importing serial
この一文で解決しました。
つまり僕のケースでは「__init__.py」がプロジェクト内から削除された状態でexe化したので
no moduleになっていたみたいです。
これはよく調べずに消したのが悪かった。。
完全に勉強不足ですね。。
ちなみに__init__.pyとは
[Python の __init__.py とは何なのか]めちゃめちゃ大事やん。__init__.py
その後無事、空の「__init__.py」を追加したプロジェクトをexe化すれば実行可能になりました。
白い背景に薄いオレンジ文字、みにくい