我使用cefpython创建一个简单的基于HTML5的应用。我使用Python和pywin32绘制一个简单的窗口并在那里渲染帧。
我想将 .py 编译成 .exe ,但我不知道该怎么做。我尝试使用py2exe但是当我运行结果时出现错误
Traceback (most recent call last):
File "myApp.py", line 19, in <module>
File "cefpython1\__init__.pyc", line 4, in <module>
ImportError: cannot import name cefpython_py27
我尝试在分发目录中复制cefpython_py27.pyd
,但似乎没有效果。
任何人都可以帮助我吗?这有可能吗?
感谢。
答案 0 :(得分:4)
我最终搞砸了它,我完成了以下步骤(我使用python2.7): 我像这样导入了cefpython:
从cefpython1导入cefpython_py27作为cefpython
我的py2exe抱怨找不到python32.dll,因为我懒得和cba混淆__ini__
文件并搜索导入的地方我刚刚将python32.dll添加到设置文件中的选项中的dll_excludes。 py2exe完成后,我还必须手动将这些foler和文件复制到我的dist文件夹中:
- C:\Python27(your python path)\Lib\site-packages\cefpython1\locales - whole folder
- C:\Python27(your python path)\Lib\site-packages\cefpython1\icudt.dll
要警告dll相对较大:icudt.dll = 9.8MB,libcef.dll = 24.3MB所以不要指望小的dist文件夹大小。
答案 1 :(得分:4)
扩展hidetr的答案,在setup.py中添加这样的内容将复制所需的文件:
def get_cefpython_path():
import cefpython1 as cefpython
path = os.path.dirname(cefpython.__file__)
return "%s%s" % (path, os.sep)
def get_data_files():
cefp = get_cefpython_path()
data_files = [('', ['%s/icudt.dll' % cefp,
'%s/d3dcompiler_43.dll' % cefp,
'%s/d3dx9_43.dll' % cefp,
'%s/devtools_resources.pak' % cefp,
'%s/ffmpegsumo.dll' % cefp,
'%s/libEGL.dll' % cefp,
'%s/libGLESv2.dll' % cefp,
'%s/Microsoft.VC90.CRT.manifest' % cefp,
'%s/msvcm90.dll' % cefp,
'%s/msvcp90.dll' % cefp,
'%s/msvcr90.dll' % cefp]),
('locales', ['%s/locales/en-US.pak' % cefp]),
]
return data_files
setup(
data_file = get_data_files()
...
答案 2 :(得分:4)
这对我来说对Python 2.7 Win32有用。我已经使用了cefpython示例文件夹中的cefsimple.py示例进行演示。您需要win32gui模块才能使用此示例,因此请先安装它。
from cefpython1 import cefpython
。基于__file__
的模块检测在py2exe中不起作用并导致错误,因此我已将其删除(可能还有更好的方法)。
from setuptools import setup
import py2exe
import os
def get_cefpython_path():
import cefpython1 as cefpython
path = os.path.dirname(cefpython.__file__)
return "%s%s" % (path, os.sep)
def get_data_files():
cefp = get_cefpython_path()
data_files = [('', [
'%s/icudt.dll' % cefp,
'%s/d3dcompiler_43.dll' % cefp,
'%s/d3dx9_43.dll' % cefp,
'%s/devtools_resources.pak' % cefp,
'%s/ffmpegsumo.dll' % cefp,
'%s/libEGL.dll' % cefp,
'%s/libGLESv2.dll' % cefp,
'%s/Microsoft.VC90.CRT.manifest' % cefp,
'%s/msvcm90.dll' % cefp,
'%s/msvcp90.dll' % cefp,
'%s/msvcr90.dll' % cefp,
'icon.ico', 'cefsimple.html']),
('locales', ['%s/locales/en-US.pak' % cefp]),
]
return data_files
setup(
data_files = get_data_files(),
windows=['cefsimple.py'],
options={
"py2exe": {
"includes": ["json", "urllib"]
}
}
)
python setup.py py2exe
dist/cefsimple.exe
您可以获取此示例的文件from my Google Drive。
答案 3 :(得分:1)
现在有一个使用PyInstaller创建可执行文件的官方示例。目前,在撰写本文时,仅支持Windows平台。参见:
https://github.com/cztomczak/cefpython/blob/master/examples/pyinstaller/README-pyinstaller.md