私は私のアプリをパッケージ化する方法を理解するために多くの時間を費やしたので、ここで本当に私を助けてくれたいくつかの指示があります。
いくつかの情報はhttp://pythonhosted.org/PyInstaller/
のPython 3でご利用いただけます。私のアプリをパッケージ化することは私にエラーIndexError: tuple index out of range
を与えたので2017年3月 のよう6は、私がpyInstallerのの開発効率向上のバージョンをインストールする必要がありました:
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
ステップ1:
私はMyApp
のすべてのファイルを移動しますフォルダ"C:\Users\<username>\Desktop\MyApp"
:.py
、.kv
、画像と私はicon.ico
を作成しました。 別のフォルダC:\Users\<username>\Desktop\MyPackagedApp
を作成しました。このフォルダではShift+right click
を押してopen command window here
を選択します。
は、その後、私はこれを貼り付け:
python -m PyInstaller --name MyApp --icon "C:\Users\<username>\Desktop\MyApp\icon.ico" "C:\Users\<username>\Desktop\MyApp\myapp.py"
これは、2つのフォルダ、build
とdist
、および.spec
ファイルを作成します。 dist/MyApp
には、.exe
があります。私のアプリは、(ちょうど1ラベル)本当に簡単であればどうやら、パッケージアプリがステップなしで動作することができます2.
ステップ2:
第二段階は、.spec
ファイルの編集が含まれます。 Hereは私の例です。 (my_hidden_modules
についての説明のためのCFステップ3)
私はcmd
に戻って、私は、この警告だ
python -m MyApp myapp.spec
入力します。私は、その後y
とを入力
WARNING: The output directory "..." and ALL ITS CONTENTS will be REMOVED! Continue? (y/n)
をenter
を押してください。
私はyを選んだので、フォルダbuild
がまだ残っていて、dist/MyApp
にまだ多くのファイルが含まれていたと推測されました。しかし、これは正常です。 PyInstallerは、単一のファイル.exe
またはすべてのスクリプトの依存関係と実行可能ファイルを含む単一のフォルダを出力できます。しかし、デフォルトの出力は複数のファイルを持つ単一のフォルダです。
ステップ3:私はdist/MyApp
にmyapp.exe
をクリックすると、隠しモジュール
を追加して、アプリがクラッシュしました。ログC:\ Users \ .kivy \ logs \に2つのエラー:ModuleNotFoundError: No module named 'win32timezone'
とSystemError: <class '_frozen_importlib._ModuleLockManager'>
があります。このため は私が.specファイルを編集し、これらの行を追加する必要がありました:
a = Analysis
で
my_hidden_modules = [
('C:\\Users\\<username>\\AppData\\Local\\Programs\\Python\\Python36\\Lib\\site-packages\\win32\\lib\\win32timezone.py', '.')
]
私はdatas = my_hidden_modules
にdatas = []
を変更し、
を私はFileChooser
ウィジェットを使用するのでどうやらこれがあります。