python回転exeで遭遇したピットとソリューション


pythonは現在比較的火のプログラミング言語であるが、python環境のないwindowsマシン上で実行する必要がある場合がある.pyファイルをに変換します.exeファイル、私はpyinstallerというライブラリ(このライブラリの使用をお勧めします.py 2 exeというライブラリの問題はもっと多いです)を使っています.その結果、使用中に予想外のエラーがいくつか発生しました.ここに問題と解決策を記録します.
1.pyinstallerのインストール
通常、cmdインタフェースでは、以下のコマンドを入力すると正常にインストールできます.
pip install pyinstaller

問題が発生したり、ダウンロード速度が遅すぎる場合は、豆弁源を選択できます.
pip install -i https://pypi.douban.com/simple/ pyinstaller

現在の本人の環境はpython 3.6+pyinstaller3.2.1
2.通常パッケージコマンド
pyinstaller -F -w  -i ico_path  py_path 

-Fはすべてのファイルを1つのexeファイルにするもので、一般的には必ず書く(大文字でなければならないことに注意)-wはプログラム実行時にcmdインタフェースを表示しない(一部のプログラムがクリックして黒い枠が点滅するのを避ける)-i生成したexeファイルのアイコンを修正し、書かない(-i書かないとico_pathも書かない)ico_pathは生成されたexeファイルアイコンの位置py_です.pathはターゲットpyファイルの場所です
3.各種問題及び解決策
3.1パッケージ化後exeファイルが見つかりません
生成されたexeファイルはbuildディレクトリの下ではなくdistディレクトリの下にあります.
3.2 exeが点灯するとfailed to execute script xxxが表示されます
この問題は主にpyinstallerコマンドを使用する際に-wパラメータとprint()またはsubprocessを使用する.run()などの衝突.前述した-wはコンソールを強制的に表示しないがprint()関数はコンソールに情報を表示するので、2つの間に衝突が発生する.解決策は1.-wパッケージを使用するプログラムではprint()やinput()のような操作台が必要なコマンドは使用されません.2.pyinstallerを使用する場合は-wを付けません.
3.3パッケージ後のexeファイルが大きい
一部のプログラムは書き終わってから数十kbしかなかったが、exeに変わってから数百MBになった.これは主にpythonプログラムを書くときにimportのライブラリがある場合、exeファイルを転送するときにライブラリ全体をexeファイルにパッケージ化するので、最も良い解決策はimportが必要とする部分だけがライブラリ全体ではなく、例えばnumpyのarrayを使用するだけです.
import numpy as np #    
from numpy import array #    

3.4梱包時にUnicodeDecodeError:‘utf-8’codec can’t decode byte 0 xce in position XXXX:invalid continuation b
主な原因は符号化フォーマットの衝突解決方法1である.中国語コメント2を削除する.pyinstallerを実行する前にcmdに入力します
chcp 65001