2017-03-26 44 views
0

私はinstructionsフォームのKivyウェブサイトに次のような問題があります。Pyinstallerでkivyアプリをパッケージ化

WARNING: The output directory "..." and ALL ITS CONTENTS will be REMOVED! Continue? (y/n) 

yを選択しても、フォルダは削除されません。 .specファイル内

  • from kivy.deps import sdl2, glew
  • Tree('C:\\Users\\<username>\\Desktop\\MyApp\\'),
  • *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)]

はまた、私は常にこれらの行を追加する必要がありますか?彼らはなぜ必要なのですか?

Kivyに関する情報はほとんどありません。

答えて

1

ので、ライン:

そのすべての内容が削除されます!

はい、それは新しいファイルに置き換え後のを削除されます。日付を確認してください。私はそれがファイルとフォルダ全体のためにそのような薄いことができない場合permission deniedを印刷すると思いますので、気づくでしょう。ただし、フォルダにファイルを追加する必要があるため、重要です。

2種類のこれらの追加ファイル:

  • kivyの依存関係
  • アプリケーションデータ

依存関係がちょうどバイナリ(+/-ローダー、ライセンス、またはそう)している、あなたはを通してそれらを得ますコードの*[Tree(p) ...]は「そのフォルダからすべてのファイルを取得する」コマンドです。彼らがなければ、Kivyは始まらないだろう。

同様と、第二Tree(<app folder>)は同じことを行いますが、そのような.pyファイル、.kvファイル、画像、音楽、データベース、基本的に何でもとして自分のファイルのためにあなたが作成し

デープを削除した場合、アプリは起動しません。アプリデータを削除すると、パスエラーが発生し、クラッシュする可能性が高くなります。あなたはそれを望んでいません:P

1

私は私のアプリをパッケージ化する方法を理解するために多くの時間を費やしたので、ここで本当に私を助けてくれたいくつかの指示があります。

いくつかの情報は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つのフォルダ、builddist、および.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/MyAppmyapp.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_modulesdatas = []を変更し、

を私はFileChooserウィジェットを使用するのでどうやらこれがあります。

関連する問題