はじめに
pythonファイルを実行ファイル(exe化)にしたい!
そんなあなたのための記事です.
環境
OS:windows 10 Education
pythonバージョン:python3.6.5(anaconda)
やること
やることはざっとこんな感じです.
1. pyinstallerのインストール
2. 実行
3. .specの書き換え
4. .specでビルド
5. ディレクトリの作成
6. コピー
7. .specでリビルド
起きること
めっちゃ再帰する
maximum recursion depth exceeded while calling a Python object
というエラー文が出ます.
出なければ何も問題はありません(たぶん).
PyQt5がない
Cannot find existing PyQt5 plgin directories Paths checked: ディレクトリパス
というエラー文が出ます.
でなければ何も問題はありません(たぶん).
解決策
やることの詳細を交えて,問題の解決策を書いていきます.
めっちゃ再帰する
pip install pyinstaller
だけです
- 実行
pyinstaller pyファイル名 --onefile --noconsole
※--onefile:パッケージを丸っと1つのファイルにする,与えないとどうなるかやってないからわからない
※--noconsole:実行時にコンソール画面を出さない,与えないとコンソールの黒い画面が出てきます.
プログラムからの出力としてコンソール出力を想定しているなら,与えないほうが良いです.
これは実行すると【めっちゃ再帰するね】というエラーが出ます.
そこで次の2つです.
3. .specの書き換え
2.の手順でpyファイル名.specが生成されていますのでそれを開きます.
一番上に# -*- mode: python -*-
とあります.
二行目,三行目に次の二行を足します.
import sys
sys.setrecursionlimit(10000)
4. .specでビルド
pyinstaller pyファイル名.spec
※ビルドするのは.specファイルです.
PyQt5がない
後半はこの記事を参考にしました.
5. ディレクトリの作成
4.で【PyQt5がないからディレクトリパスを確認しろ】と出たら確認してみましょう.
本当にありません.
なければ作るまでです.
指定されたと通りにフォルダを作成していきます.
6. コピー
中身がないと困りますので,コピーします.
anacondaのライブラリからプラグインを持ってきます.
Anaconda3\**\Library\plugins
に必要なファイルたちがいそうです.
※\**\
の部分は人やバージョンによって違うかもしれません.
自分の場合C:\Users\ユーザ名\Anaconda3\Library\plugins
のファイルを
C:\qt64\qt_1544645195969\_h_env\Library\plugins
に持ってきました.
7. .specでリビルド
これでうまく行くはずです.リビルドしてみましょう.
pyinstaller pyファイル名.spec
※ビルドするのは.specファイルです.
コンソールに
Building EXE from EXE-00.toc completed successfully
的な出力が出れば完了です.
おわりに
参考にした記事の作者の皆様,ありがとうございました.
両方をまとめた記事がなかったので,備忘録も兼ねて書いてみました.
誰かが救われればと思います.
おわらない
生成したexeファイルを他のPCで動かすと...
動かない
というトラブルが発生しました.
そこはQiitaさん.
ソリューションはちゃんとありました笑
ここです!本当にありがとう
原因
1.Intel MKLが悪さをしている
2.Pandasが悪さをしている
対処法
1.anacondaの仮想環境作成時にライブラリを指定
2.pyinstaller走らせる時にコマンドを追加する
ここの解決方法その2に書いてあります.