【发布时间】:2018-06-25 13:05:22
【问题描述】:
过去一周我一直在与 PyInstaller 作斗争,试图让我的应用程序编译成单个可执行文件。
我已经用 .spec 文件尝试了几种不同的实现,在我尝试的许多方法中,我可以让它编译成一个在启动时立即崩溃、根本不启动的可执行文件,或者它运行,但速度极慢。与我用 PyCharm 运行它时相比,没有什么可比的。
我不确定运行速度慢是因为编译器还是什么,但是当我通过 PyCharm 运行执行任务时,它运行大约需要 1-2 秒,但是当它从可执行文件运行时它大约需要 30-35 秒,然后应用程序挂起。
我的应用程序基本上从 TextInput 框中获取一些文本,从中获取文本值,执行一些 SQL 查询,然后提交适当的信息以更新/添加条目信息到访问数据库中。
我最新的.spec文件如下:
# -*- mode: python -*-
import pyodbc
from datetime import date
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.properties import BooleanProperty, ObjectProperty
from kivy.deps import sdl2, glew
block_cipher = None
a = Analysis(['DBInterfaceAssistant.py'],
pathex=['C:\\Python36-32'],
binaries=[],
datas=[],
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,
a.binaries,
a.zipfiles,
a.datas,
name='DBInterfaceAssistant',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False )
这个产品是一个无法启动的应用程序,它尝试加载应用程序但立即崩溃。
---编辑---
我当前的构建脚本如下:
# -*- mode: python -*-
import pyodbc
from datetime import date
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.properties import BooleanProperty, ObjectProperty
from kivy.deps import sdl2, glew
from kivy.tools.packaging.pyinstaller_hooks import get_deps_minimal, get_deps_all, hookspath, runtime_hooks
block_cipher = None
a = Analysis(['DBInterfaceAssistant.py'],
pathex=['C:\\Python36-32'],
binaries=[],
datas=[],
hookspath=hookspath(),
runtime_hooks=runtime_hooks(),
** get_deps_all())
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
name='DBInterfaceAssistant',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False )
【问题讨论】:
标签: python python-3.x kivy pyinstaller