Я также попробовал Awesomium (это c ++ и 40mb +) PyWebKit (работал, но мои слушатели svg mousemove-слушатели не сделали), поэтому я использовал cefpython и pyinstaller.
Вот что я только что сделал, чтобы получить «exe-файл-щелчок-окна-веб-приложения» .exe.
- скачано cefpython , поставляется с скомпилированным dll с хромом внутри (20 МБ)
- запустите "python cefsimple.py", чтобы увидеть, работает ли он (должен)
- сейчас загрузите pyinstaller
- распаковать, если в какую-то папку
- скопировать все файлы cefpython в только что созданную папку pyinstaller
- копирование из pyinstaller / utils MakeSpec.py и Build.py на одну папку вниз
- запустить «MakeSpec.py cefsimple.py», чтобы создать файл cefsimple.spec для встроенного
- Если вы попытаетесь запустить «Build.py cefsimple.spec», if скопирует файлы в папку с именем dist
- если вы запустите exe-файл, он не будет работать, потому что некоторые библиотеки и значок отсутствуют
- давайте добавим dll, изменив spec-файл (я добавлю его позже в текст)
- если вы соберете его снова, он скопирует значок и все остальное в папку, чтобы запустить исполняемый файл (вы увидите cefsimple.html в реальном встроенном кадре хрома)
- теперь вы можете поиграть либо с встраиванием, либо с помощью pyhton-кода, чтобы исправить ваши http-ссылки, и вы получите прекрасный "один клик-windows-web-app-исполняемый файл" :-) (см. - опция onefile в документации по pyinstaller)
cefsimple.spec:
# -*- mode: python -*-
a = Analysis(['cefsimple.py'],
pathex=['c:\\pyinstaller-2.0'],
hiddenimports=[],
hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
[('icudt.dll', 'icudt.dll', 'BINARY')],
[('avcodec-54.dll', 'avcodec-54.dll', 'BINARY')],
[('libEGL.dll', 'libEGL.dll', 'BINARY')],
[('avformat-54.dll', 'avformat-54.dll', 'BINARY')],
[('avutil-51.dll', 'avutil-51.dll', 'BINARY')],
[('d3dcompiler_43.dll', 'd3dcompiler_43.dll', 'BINARY')],
[('d3dx9_43.dll', 'd3dx9_43.dll', 'BINARY')],
[('libGLESv2.dll', 'libGLESv2.dll', 'BINARY')],
[('locales\\en-US.pak', 'locales\\en-US.pak', 'DATA')],
[('icon.ico', 'icon.ico', 'BINARY')],
a.zipfiles,
a.datas,
name=os.path.join('dist', 'cefsimple.exe'),
debug=False,
strip=None,
upx=True,
console=False, icon='icon.ico' )
app = BUNDLE(exe,
name=os.path.join('dist', 'cefsimple.exe.app'))
Если он должен работать на любой Windows 2000+, ни на Python, ни на системных библиотеках, ни на дополнительных библиотеках, ни на иконках.
Если вы построите его на 64-битной Windows7, он не будет работать на 32-битных системах
Если вы собираете его на WindowsXP 32bit, он работает везде. Даже в вине. Но почему-то я не смог достать значок из exe для заголовка. пришлось загрузить его с внешнего (код в cefwindow.py).
Спроси у меня подробности, пока еще свежо!
EDIT:
для активации локальных запросов json:
# BrowserSettings, см .: http://code.google.com/p/cefpython/wiki/BrowserSettings
browserSettings = dict ()
browserSettings ["universal_access_from_file_urls_allowed"] = True
browserSettings ["file_access_from_file_urls_allowed"] = True