我已经使用python,kivy和google cloud ml引擎开发了一个应用程序,并使用Pyinstaller进行了部署,到目前为止,该应用程序运行良好,我已经开始使用google cloud firestore,并且该应用程序在我的环境中运行良好。
当我开始部署时,由于必须使用Firestore,我不得不解决SSL和Pyinstaller中的钩子的问题,我也做到了,这要感谢stackoverflow和其他资源的大量帮助,但是“有趣”的事情与我的pyinstaller deploy软件包一起使用时,它仅在将exe配置中的调试标志设置为True时起作用,如果我将其设置为False,则exe会立即启动并关闭,而没有任何信息,如果我将debug设置为True,则该程序可以工作,但带有一些其他日志与以前的版本相比。
我只是不知道我做错了什么,还是应该只在调试模式下使用我的软件包并继续前进。
我在pyinstaller中使用此行: pyinstaller --distpath C:\ dev \ install stock.spec --workpath C:\ dev \ install \ build
我的stock.spec文件:
# -*- mode: python -*-
from kivy.deps import sdl2, glew
block_cipher = None
added_files = [
( 'layout.kv', '.' ),
( '*.jpg', '.' ),
( '*.png', '.' ),
( './samples', 'samples' ),
( 'config.json', '.'),
( 'env_path\\Lib\\site-packages\\grpc\\_cython\\_credentials\\roots.pem', 'grpc\\_cython\\_credentials\\'),
( 'env_path\\Lib\\site-packages\\tensorflow\\python\\_pywrap_tensorflow_internal.pyd', 'tensorflow\\python')
]
a = Analysis(['myapp.py'],
pathex=['myapp_path', 'myapp_path\\tools', 'myapp_path\\object_detection'],
binaries=[('<env_path>\\Library\\bin\\opencv_ffmpeg342_64.dll', '.')],
datas=added_files,
hiddenimports=['kivy.uix.recycleview', 'win32timezone'],
hookspath=[],
runtime_hooks=[],
excludes=['./*.git'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='myapp',
debug=True,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=True )
coll = COLLECT(exe, Tree('myapp_path'),
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
strip=False,
upx=False,
name='myapp')