2016-06-08 2 views
1

Ich habe eine kivy App gemacht und ich habe eine .apk mit buildozer verpackt. Tatsache ist, dass ich jetzt in eine .exe für Windows mit Pyinstaller packen möchte, aber ich habe festgestellt, dass diese beiden Programme (buildozer und Pyinstaller) nicht auf die gleiche Weise funktionieren. Ich habe nach einem guten Tutorial gesucht, das mir helfen könnte, die Datei zu bekommen, aber alle Tutorials, die ich gesehen habe, sind zu einfach und erklären zum Beispiel nicht, wie man externe Dateien der main.py (zB Bilder) importiert und wie externe Module importieren (In buildozer musste ich die Bibliotheken hinzufügen, die ich wollte, um die apk-Datei ordnungsgemäß zu funktionieren). Ich arbeite in Ubuntu (Soll ich in Windows arbeiten, wenn ich eine ausführbare Datei für Windows bekommen möchte?) Und ich habe die Liste, die ich meiner .apk hinzugefügt habe, um richtig zu funktionieren. Die Liste ist:Wie bekomme ich eine Windows-Programmdatei von meiner Kivy-App (Pyinstaller)?

requirements = kivy,sqlite3,requests,simplejson,icalendar,datetime,pytz,HTMLParser,email,openssl

Wenn jemand könnte mir sagen, wie die anderen Dateien hinzufügen (main.py ist die Datei, Master, aber ich habe zwei andere Dateien, die in main.py importiert werden) Ich würde sehr zufrieden sein, weil ich Ich habe es oft versucht und bis es nicht funktioniert.

Antwort

-3

Die Kivy-Dokumentation hierfür lautet here.

Sie müssen wahrscheinlich dies in Windows ausführen, wenn Sie ein Paket für diese Plattform erstellen möchten.

0

Sie müssen PyInstaller yourfile.spec in einer Windows-Umgebung ausführen. Ich kann eine Spezifikationsdatei teilen, die ich nur als Beispiel verwende.

# -*- mode: python -*- 

import os 
from os.path import join 

from kivy import kivy_data_dir 
from kivy.deps import sdl2, glew 
from kivy.tools.packaging import pyinstaller_hooks as hooks 

block_cipher = None 
kivy_deps_all = hooks.get_deps_all() 
kivy_factory_modules = hooks.get_factory_modules() 

datas = [ 
    (join('common', '*.ini'), 'common') 
] 

# list of modules to exclude from analysis 
excludes_a = ['Tkinter', '_tkinter', 'twisted', 'docutils', 'pygments'] 

# list of hiddenimports 
hiddenimports = kivy_deps_all['hiddenimports'] + kivy_factory_modules 

# binary data 
sdl2_bin_tocs = [Tree(p) for p in sdl2.dep_bins] 
glew_bin_tocs = [Tree(p) for p in glew.dep_bins] 
bin_tocs = sdl2_bin_tocs + glew_bin_tocs 

# assets 
kivy_assets_toc = Tree(kivy_data_dir, prefix=join('kivy_install', 'data')) 
source_assets_toc = Tree('images', prefix='images') 
assets_toc = [kivy_assets_toc, source_assets_toc] 

tocs = bin_tocs + assets_toc 

a = Analysis(['yourmain.py'], 
      pathex=[os.getcwd()], 
      binaries=None, 
      datas=datas, 
      hiddenimports=hiddenimports, 
      hookspath=[], 
      runtime_hooks=[], 
      excludes=excludes_a, 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher) 


pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) 


exe1 = EXE(pyz, 
      a.scripts, 
      name='mywindowsapplication', 
      exclude_binaries=True, 
      icon=join('images', 'mywinapp.ico'), 
      debug=False, 
      strip=False, 
      upx=True, 
      console=False) 


coll = COLLECT(exe1, 
       a.binaries, 
       a.zipfiles, 
       a.datas, 
       *tocs, 
       strip=False, 
       upx=True, 
       name='mywinapp') 

Setzen Sie die ‚myfile.spec‘ Datei im gleichen Verzeichnis, in dem ‚yourmain.py‘ Datei vorhanden ist. Führen Sie dann PyInstaller myfile.spec aus diesem Verzeichnis aus. Ein Build- und ein Dist-Ordner wird erstellt. Im Ordner dist finden Sie Ihre exe. Hoffe das geht dich.

+0

Ihr Code verwendet externe Module? Ich sage, weil mein Hauptproblem darin besteht, dass ich nicht weiß, wie man die externen Module von Python (zB icalendar) zur .spec-Datei hinzufügt. Außerdem weiß ich nicht, wie man die Bilder, die in der App verwendet werden, hinzufügt (die kivy App verwendet Bilder des Verzeichnisses von main.py). –

+0

Ja, ich verwende ziemlich viele externe Module. Dies wird vom Skript gesammelt. Sie können Bilder über die Daten-Direktive hinzufügen. In meiner Umgebung befinden sich die Bilder im "gemeinsamen" Unterordner. –

+0

Wie fügen Sie mehrere _files_ anstelle von folders hinzu, wenn Sie Assets hinzufügen? – Nearoo

Verwandte Themen