2016-08-23 2 views
1

=== Редактирование конца ===PyInstaller Kivy ClockApp Пример Выпуск

Мусор!

Благодаря предложениям ниже & (8) часов компиляции & перекомпиляции я был в состоянии исправить свои проблемы делает комбинацию вещей:

  1. Понимание, как Pyinstaller крючки необходимы для того, чтобы крикнуть модулей правильно.

  2. Убедитесь, что все входные файлы & расположены на одном диске. В моей компании переменные системной среды по умолчанию установлены на подключенный сетевой диск, поэтому я должен был убедиться, что все параметры переменной пользовательской среды были сопоставлены по умолчанию «C:», так что pyinstaller подберет ее. Это включало настройку моего cmd.exe на правильный диск & выход файла назначения.

  3. Обеспечение всех необходимых файлов (.JPG, .kv, .PNG) файлы были в/DIST папку ПОСЛЕ Я построил правильный .spec файл

я был в состоянии упаковать пример PongGame на сайт kivy, а также пример Paint_App для книги/главы 2, упомянутой ниже.

Еще раз спасибо.

=== ПОСЛЕДНИЙ Edit End ===

=== РЕДАКТИРОВАТЬ === Снова

Согласно предложению ниже, я попытался запустить программу, показывающую журнал ошибок.

Однако работа с cmd.exe даже не выплевывает журнал ошибок.

No error log being created

Однако .kivy сохраняет все журналы ошибок.

[INFO    ] Logger: Record log in H:\.kivy\logs\kivy_16-08-30_29.txt 
[INFO    ] Kivy: v1.9.1 
[INFO    ] Python: v3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32 bit (Intel)] 
[INFO    ] Factory: 179 symbols loaded 
[INFO    ] Image: Providers: img_tex, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored) 
[INFO    ] OSC: using <thread> for socket 
[INFO    ] Window: Provider: sdl2 
[INFO    ] GL: GLEW initialization succeeded 
[INFO    ] GL: OpenGL version <b'4.2.0'> 
[INFO    ] GL: OpenGL vendor <b'NVIDIA Corporation'> 
[INFO    ] GL: OpenGL renderer <b'Quadro K3000M/PCIe/SSE2'> 
[INFO    ] GL: OpenGL parsed version: 4, 2 
[INFO    ] GL: Shading version <b'4.20 NVIDIA via Cg compiler'> 
[INFO    ] GL: Texture max size <16384> 
[INFO    ] GL: Texture max units <32> 
[INFO    ] Window: auto add sdl2 input provider 
[INFO    ] Window: virtual keyboard not allowed, single mode, not docked 
[INFO    ] Base: Start application main loop 
[INFO    ] Base: Leaving application in progress... 
[WARNING   ] stderr: Traceback (most recent call last): 
[WARNING   ] stderr: File "kivy\properties.pyx", line 754, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:11776) 
[WARNING   ] stderr: KeyError: 'time' 
[WARNING   ] stderr: 
[WARNING   ] stderr: During handling of the above exception, another exception occurred: 
[WARNING   ] stderr: 
[WARNING   ] stderr: Traceback (most recent call last): 
[WARNING   ] stderr: File "mainClock.py", line 40, in <module> 
[WARNING   ] stderr: File "site-packages\kivy\app.py", line 828, in run 
[WARNING   ] stderr: File "site-packages\kivy\base.py", line 487, in runTouchApp 
[WARNING   ] stderr: File "site-packages\kivy\core\window\window_sdl2.py", line 619, in mainloop 
[WARNING   ] stderr: File "site-packages\kivy\core\window\window_sdl2.py", line 362, in _mainloop 
[WARNING   ] stderr: File "site-packages\kivy\base.py", line 327, in idle 
[WARNING   ] stderr: File "site-packages\kivy\clock.py", line 515, in tick 
[WARNING   ] stderr: File "site-packages\kivy\clock.py", line 647, in _process_events 
[WARNING   ] stderr: File "site-packages\kivy\clock.py", line 406, in tick 
[WARNING   ] stderr: File "mainClock.py", line 32, in update 
[WARNING   ] stderr: File "kivy\properties.pyx", line 757, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:11882) 
[WARNING   ] stderr: AttributeError: 'super' object has no attribute '__getattr__' 

=== РЕДАКТИРОВАТЬ СНОВА End ===

EDIT:

Глядя в папке сборки, я вижу warnmainClock.txt с смехотворно большим количеством линий говорят, что я пропускаю модули.

Означает ли это, что я не правильно связываюсь с моей библиотекой папок python?

Например:

missing module named _collections.deque - imported by _collections, collections, threading, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named _thread.stack_size - imported by _thread, threading, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named _thread._local - imported by _thread, threading, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named threading.current_thread - imported by threading, _threading_local, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named threading.RLock - imported by threading, _threading_local, bz2, multiprocessing.dummy, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named sys.modules - imported by sys, dummy_threading, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named _dummy_threading - imported by dummy_threading, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named _dummy_threading.__all__ - imported by _dummy_threading, dummy_threading, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named dummy_threading.RLock - imported by dummy_threading, bz2, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named dummy_threading.local - imported by dummy_threading, numpy.distutils.misc_util, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named time.monotonic - imported by time, subprocess, threading, queue, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named time.time - imported by time, subprocess, threading, queue, kivy.uix.behaviors.button, kivy.uix.behaviors.compoundselection, kivy.effects.kinetic, kivy.uix.filechooser, kivy.input.motionevent, kivy.input.postproc.doubletap, kivy.input.postproc.tripletap, multiprocessing.managers, multiprocessing.synchronize, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named Queue - imported by kivy.compat, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named time.strftime - imported by time, kivy.logger, C:\Python34x86\Examples\kivy\mainClock.py 
missing module named kivy.app.App - imported by kivy.app, kivy.uix.scrollview, kivy.uix.screenmanager, kivy.uix.filechooser, kivy.uix.textinput, kivy.uix.settings, kivy.lang, kivy.support, kivy.core.window.window_sdl2, kivy.uix.video, kivy.uix.carousel, kivy.uix.treeview, kivy.uix.colorpicker, kivy.uix.splitter, kivy.uix.slider, kivy.uix.codeinput, C:\Python34x86\Examples\kivy\mainClock.py 

EDIT END

Я в настоящее время обучение Kivy из книги "Kivy Blueprints" Марк Василькове.

Я пытаюсь упаковать ClockApp из главы 1 в качестве упражнения. Код отлично работает из командной строки python. Тем не менее, я запускаю проблему с помощью pyinstaller для создания пакета Windows.

Исходный код & .kv файл найден здесь https://github.com/mvasilkov/kb/tree/master/1_Clock

Я последовал примеру https://kivy.org/docs/guide/packaging-windows.html

Я создал пакет окна из командной строки с помощью:

C:\Python34x86\Scripts\pysintaller C:\Python34x86\Examples\kivy\mainClock.py --noconsole 

Тогда я строю из файла спецификации, используя:

C:\Python34x86\Scripts\pyinstaller H:\mainClock.spec 

Обе команды создают файл/dist в моем драйвере H, как указано.

Когда я получить доступ к файлу EXE после просто здание из \ mainClock.py, я получаю ошибку:

Error Log from Console after Running

При запуске файла EXE после построения .spec файла я получаю следующее :

Error after building .spec

.spec файл выглядит следующим образом:

# -*- mode: python -*- 

block_cipher = None 


a = Analysis(['C:\\Python34x86\\Examples\\kivy\\mainClock.py'], 
      pathex=['H:\\'], 
      binaries=None, 
      datas=None, 
      hiddenimports=[], 
      hookspath=[], 
      runtime_hooks=[], 
      excludes=[], 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher) 
pyz = PYZ(a.pure, a.zipped_data, 
      cipher=block_cipher) 
exe = EXE(pyz, 
      a.scripts, 
      exclude_binaries=True, 
      name='mainClock', 
      debug=True, 
      strip=False, 
      upx=True, 
      console=False) 
coll = COLLECT(exe, 
       a.binaries, 
       a.zipfiles, 
       a.datas, 
       strip=False, 
       upx=True, 
       name='mainClock') 

Я думаю, что проблема не связана с источником, может кто-нибудь, пожалуйста, указать, что я делаю неправильно?

+0

насчет написания .spec [правильно] (https://kivy.org/docs/guide/packaging-windows.html#packaging-a-simple-app)? – KeyWeeUsr

+0

Я читал инструкции несколько раз и пытался построить, используя приведенный ниже скрипт. Однако я не получаю никаких результатов. Если вы знаете, что именно я делаю неправильно, укажите мне это. –

+1

Суть заключалась в том, чтобы включить двоичные файлы, как уже упоминалось в ответе. Можете ли вы вставить полный журнал ошибок, который вы получаете после создания с помощью спецификации в ответе? Если это без консоли, запустите приложение в cmd.exe (...> mainClock), и он должен предоставить дополнительную информацию. Я думаю, что вы, возможно, все еще не хватает этих двоичных файлов, поскольку они, вероятно, не были включены в переменную% path%. – KeyWeeUsr

ответ

2

Возможно, следующий код поможет вам?

# -*- 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 = [] 

# list of modules to exclude from analysis 
excludes = ['Tkinter', '_tkinter', 'twisted', '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 = [] 
assets_toc = [kivy_assets_toc, source_assets_toc] 

tocs = bin_tocs + assets_toc 


a = Analysis(['C:\\Python34x86\\Examples\\kivy\\mainClock.py'], 
      pathex=['H:\\'], 
      binaries=None, 
      datas=datas, 
      hiddenimports=hiddenimports, 
      hookspath=[], 
      runtime_hooks=[], 
      excludes=excludes, 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher) 

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

exe = EXE(pyz, 
      a.scripts, 
      name='mainClock', 
      exclude_binaries=True, 
      debug=False, 
      strip=False, 
      upx=True, 
      console=False) 

coll = COLLECT(exe, 
       a.binaries, 
       a.zipfiles, 
       a.datas, 
       *tocs, 
       strip=False, 
       upx=True, 
       name='mainClock') 
+0

Билл, спасибо за ваш ответ. Я построил спецификацию в соответствии с вышеизложенным. «все еще получается» Ошибка выполнения скрипта mainClock ». –

Смежные вопросы