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