3

我正在使用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,但似乎没有效果。

谁能帮我?这完全可行吗?

谢谢。

4

4 回答 4

4

我最终搞砸了它,我通过以下步骤进行了管理(我使用python2.7):我像这样导入了cefpython:

从 cefpython1 导入 cefpython_py27 作为 cefpython

我的 py2exe 抱怨找不到 python32.dll,因为我懒惰和 cba 弄乱__ini__文件并搜索它的导入位置,我只是在安装文件的选项中将 python32.dll 添加到 dll_excludes。py2exe 完成后,我还必须手动将这些文件夹和文件复制到我的 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 文件夹的大小。

于 2013-04-21T09:32:24.423 回答
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()
    ...
于 2013-08-12T00:54:04.460 回答
4

这是对我有用的 Python 2.7 Win32。我使用了 cefpython 示例文件夹中的 cefsimple.py 示例进行演示。您需要 win32gui 模块才能使此示例正常工作,因此请先安装它。

  • 下载并安装了cefpython1 pacakage。
  • 将 cefsimple.html、cefsimple.py、cefwindow.py 和 icon.ico 从 cefpython 的示例目录复制到一个单独的目录中,并将 cefsimple.py 更改为简单地将 cefpython 导入为from cefpython1 import cefpython. 基于__file__模块检测在 py2exe 中不起作用并导致错误,因此我将其删除(也许有更好的方法)。
  • 在包含复制的上述文件的文件夹中创建了以下 setup.py:

    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"]
            }
        }
    )
  • 然后只需在目录中运行py2exe,如下所示:python setup.py py2exe
  • 您现在可以运行生成的应用程序dist/cefsimple.exe

您可以从我的 Google Drive获取此示例的文件。

于 2014-08-24T11:43:07.133 回答
2

现在有一个使用 PyInstaller 创建可执行文件的官方示例。在撰写本文时,目前仅支持 Windows 平台。看:

https://github.com/cztomczak/cefpython/blob/master/examples/pyinstaller/README-pyinstaller.md

在此处输入图像描述

于 2017-10-28T02:49:06.490 回答