前提・実現したいこと
seleniumとtkinterなどを利用してプログラムを作り、GUI化しました。これを他人に配布したい
発生している問題・エラーメッセージ
まず、seleniumはchromedriverを利用しているのですが、それを組み込む際の--add-binaryで
python
1pyinstaller main.py --onefile --noconsole --add-binary "./driver/chromedriver.exe;./driver"
"元ファイルパス;取込先ファイルパス"とのことですが、取り込み先ファイルパスはdistの中という認識で会っていますでしょうか?
解決(2020/06/16)
取り込み先ファイルパスはdist/からの相対パス
次に、pandasでcsvファイルに書き出す、および読み込むことをしていますが、これは--add-dataで追加したらよいのでしょうか?
次に、python標準ライブラリ以外をインポートしている際どうしたらよいでしょうか?(今回はmojimoji)
現在のフォルダ構成は
C:\Users\ユーザー名\Documents\VScode
├ driver/
│ └ chromedriver.exe
├ data1.csv
└ main.py
で、webdriver及びpandasは
python
1driver = webdriver.Chrome(r'./driver/chromedriver.exe') 2pd = pd.read_csv('data1.csv')
としています。相対パスでは問題があるなどありますか?
pyinstallerの引数指定は、
cmd
1C:\Users\ユーザー名\Documents\VScode>pyinstaller main.py --onefile --noconsole --add-binary "./driver/chromedriver.exe;./driver" --add-data "data.csv;."
としてます。こうすると、
C:\Users\ユーザー名\Documents\VScode\dist
└ main.exe
になり、そのまま実行すると、
FileNotFoundError:File data1.csv does not exist: 'data1.csv'
となるので、
C:\Users\ユーザー名\Documents\VScode\dist
├ driver/
│ └ chromedriver.exe
├ data1.csv
└ main.exe
にすると自分のパソコンでは動いたのですが、配布すると、
ImportError: DLL load failed:指定されたモジュールが見つかりません
と出ます。これはエラーの場所からしてmojimojiだとわかりました。
pyinstallerを使うと、distのほかに、_pycache_やbuildができるが、配布する際は、distだけでいいのか。また上記の指定はあっているのか、ご教授いただけると幸いです
追加
外部モジュール(mojimoji)のsite\packagesをバイナリに追加したらいいのかと思い、specファイルのbinariesに
binaryies = [('C.\Users\ユーザー名\~~~\mojimoji_init_.pyi','./mojimoji')]
などを追加し、実行してみると、配布する前のパソコンでは実行できたのですが、配布後のパソコンで
Traceback (most recent call last):
File "main.py", line 19, in <module>
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
[17400] Failed to execute script main
line 19 はimport mojimojiでやはり、外部ライブラリを認識していないようです。
その時のファイル構成は
C:\Users\ユーザー名\Documents\VScode\dist
├ driver/
│ └ chromedriver.exe
├ mojimoji/
│ ├ init.pyi
│ └py.typed
├ data1.csv
└ main.exe
です。
さらに追加
配布する前のパソコンで実行ができるのは,そのパソコンにmojimojiがインポートされているからだと分かりました
exeファイルに内包する方法をご存じの方,ご教授お願いします
補足情報(FW/ツールのバージョンなど)
selenium
python3
win10
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/24 02:17