1

URLを開く簡単なcefpythonコードがいくつかあり、pyinstallerでスタンドアロンの実行可能ファイルを作成しようとしています:

https://github.com/cztomczak/cefpython/tree/master/examples/pyinstallerから aa という名前のディレクトリにファイルをコピーしましたpyinstaller

pyinstaller.spec に次のマイナーな変更を加えました

+SECRET_CIPHER = ""
...
-    ["../wxpython.py"],
+    ["../hello.py"],
...
-          icon="../resources/wxpython.ico")
+          )
 

同じマシンで python 3.5.4 64 ビットおよび以下の virtualenv を使用して、Windows でアプリケーションを正常にコンパイルできます。

cefpython3==66.0
future==0.18.2
PyInstaller==3.2.1
pypiwin32==223
pywin32==228

また、python 3.6.4 64 および以下の virtualenv でウィンドウをコンパイルすることもできます。

altgraph==0.17
cefpython3==66.0
future==0.18.2
macholib==1.14
pefile==2019.4.18
PyInstaller==3.3.1
pyinstaller-hooks-contrib==2020.9
pypiwin32==223
pywin32==228
pywin32-ctypes==0.2.0

Linux ではコンパイルも同様に機能しますが、実行可能ファイルは動作しません。

次の出力とエラーが表示されます。

CEF Python 66.0
Chromium 66.0.3359.181
CEF 3.3359.1774.gd49d25f
Python 3.5.2 64bit
[1013/180954.001980:ERROR:icu_util.cc(133)] Invalid file descriptor to ICU data received.
Trace/breakpoint trap (core dumped)

バージョンは python 3.5.2 64bit で、virtualenv は次のとおりです。

cefpython3==66.0
pkg-resources==0.0.0
PyInstaller==3.2.1

原因は何ですか?

私がコンパイルしようとするコードは以下のとおりです。

import platform
import sys
from cefpython3 import cefpython as cef


def check_versions():
    ver = cef.GetVersion()
    print("CEF Python {ver}".format(ver=ver["version"]))
    print("Chromium {ver}".format(ver=ver["chrome_version"]))
    print("CEF {ver}".format(ver=ver["cef_version"]))
    print("Python {ver} {arch}".format(
           ver=platform.python_version(),
           arch=platform.architecture()[0]))
    assert cef.__version__ >= "57.0", "CEF Python v57.0+ required to run this"


def main(url="https://www.stackoverflow.com"):
    sys.excepthook = cef.ExceptHook
    check_versions()
    settings = {}
    switches = {}
    browser_settings = {}
    cef.Initialize(settings=settings, switches=switches)
    cef.CreateBrowserSync(
        url=url,
        window_title="CEF_HELLO: ",
        settings=browser_settings,
        )
    cef.MessageLoop()
    cef.Shutdown()


if __name__ == "__main__":
    main()

補遺: 2020-10-14:

他のバージョンのLinuxで同じエラー:これまでのところ、python 3.5および3.7を試しました

実行可能ファイルの作成に成功した人はいますか? これは、サンプル プロジェクトとその構成の問題にすぎないのでしょうか。

4

4 に答える 4