我尝试使用pyinstaller将cefpython1应用程序捆绑到单个exe中。 我有一个工作的spec文件,它为cefpython1示例创建了一个distrubiton,cefsimple:
# -*- mode: python -*-
def get_cefpython_path():
import cefpython1 as cefpython
path = os.path.dirname(cefpython.__file__)
return "%s%s" % (path, os.sep)
cefp = get_cefpython_path()
a = Analysis(['cefsimple.py'],
hiddenimports=["json.decoder", "json.scanner", "json.encoder"])
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='cefsimple.exe',
debug=False,
strip=None,
upx=False,
console=False )
coll = COLLECT(exe,
a.binaries + [('icudt.dll', '%s/icudt.dll' % cefp, 'BINARY')],
a.zipfiles,
a.datas + [('locales/en-US.pak', '%s/locales/en-US.pak' % cefp, 'DATA'), ('cefsimple.html', 'cefsimple.html', 'DATA'), ('icon.ico', 'icon.ico', 'DATA')],
strip=None,
upx=False,
name='cefsimple')
可以找到项目文件on my Google Drive。不要关心setup.py,它包含py2exe构建,我正在pyinstaller旁边玩。你需要Python 2.7,Win32gui,cefpython1,当然还有pyinstaller包来运行它,我只用Win32版测试了这个!我甚至尝试安装开发pyinstaller,如果它做了任何改变。
如果我尝试使用--onefile属性执行pyinstaller似乎没什么变化,pyinstaller只会在dist下创建分发目录。我使用的命令是:pyinstaller --onefile cefsimple.spec
使用简单的Hello World python文件测试--onefile,它确实可以正常工作。导致pyinstaller没有创建单个exe的原因是什么? build log并没有显示任何有趣的内容,但有些内容我在warning file中无法理解。例如。它说没有名为cefpython1.cefpython的模块,但是正确的pyd被复制到dist目录并且应用程序仍在运行。
以下是在dist /下创建的文件列表:cefsimple.lst也许这有助于发现问题。
答案 0 :(得分:0)
我正在使用的命令是:
std::vector
使用简单的Hello World python文件测试了--onefile,它确实 这样工作。是什么导致pyinstaller无法创建单个exe?
键入pyinstaller --onefile cefsimple.spec
时,选项-onefile 将被忽略,因为.spec已经定义了获取目录还是独立文件。具有COLLECT函数的.spec文件将构成整个pyinstaller --onefile cefsimple.spec
目录。
我建议通过键入dist
并添加您的各种修改(数据,二进制文件,隐藏的导入...)来重新制作一个.spec文件,然后然后尝试使用pyi-makespec --onefile cefsimple.py
没有选择。 pyinstaller 3.3.1对我有用。