1

I have create a package using CEFPython and it works perfectly on Windows machines. However, when used on Mac machines, the script just hang at MessageLoop() with or without opening a completely white window. I'm using CEFpython3 (version 66.0) python 3.7 MacOS 10.15

Here's my script: (I developed a web-based visualization tool, that needs "config" as input, "index_cefpython.html" is the page)

def view(config):
    settings = {
        "debug": True,
        "log_severity": cef.LOGSEVERITY_INFO,
        "log_file": "debug.log",
    }
    cef.Initialize(settings=settings)
    cwd = os.getcwd()

    browser_setting = { "file_access_from_file_urls_allowed":True,\
                    "universal_access_from_file_urls_allowed": True,\
                    "web_security_disabled":True}
    dir_path = os.path.dirname(__file__)
    index_filepath = os.path.join(dir_path, 'static/index_cefpython.html')
    browser = cef.CreateBrowserSync(url=index_filepath,
                                    window_title="ElectroLens", settings = browser_setting)
    os.chdir(cwd)
    browser.SetClientHandler(LoadHandler(config))
    bindings = cef.JavascriptBindings()
    browser.SetJavascriptBindings(bindings)
    cef.MessageLoop()
    del browser
    cef.Shutdown()
    return

class LoadHandler(object):

    def __init__(self, config):
        self.config = config
    def OnLoadEnd(self, browser, **_):
        browser.ExecuteFunction("defineData", self.config)


view(config)

and here is the entire output:

 [0515/213941.116530:INFO:cef_log.cpp(8)] [Browser process] Initialize() called


[0515/213941.144667:INFO:cef_log.cpp(8)] [Browser process] CefInitialize()


[0515/213941.145197:INFO:cef_log.cpp(8)] [Browser process] App_OnBeforeCommandLineProcessing_BrowserProcess()


[0515/213941.145229:INFO:cefpython_app.cpp(105)] [Browser process] Command line string for the browser process:  --browser-subprocess-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/subprocess --framework-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework --no-sandbox --lang=en-US --log-file=debug.log --log-severity=info --resources-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework/Resources --remote-debugging-port=63329 --disable-gpu-shader-disk-cache


[0515/213941.149767:INFO:cefpython_app.cpp(199)] [Browser process] OnBeforeChildProcessLaunch() command line: /Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/subprocess --type=gpu-process --no-sandbox --framework-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework --log-file=debug.log --log-severity=info --resources-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework/Resources --lang=en-US --disable-gpu-shader-disk-cache



DevTools listening on ws://127.0.0.1:63329/devtools/browser/b7cb600e-cdc0-46ca-a019-71651fada2ed

[0515/213941.153593:INFO:cef_log.cpp(8)] [Browser process] CreateBrowserSync() called


[0515/213941.157857:INFO:cef_log.cpp(8)] [Browser process] navigateUrl: /Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/ElectroLens/static/index_cefpython.html


[0515/213941.157891:INFO:cef_log.cpp(8)] [Browser process] CefBrowser::CreateBrowserSync()


[0515/213941.158481:INFO:cef_log.cpp(8)] [Browser process] Switch already set, ignoring: disable-gpu-shader-disk-cache


[0515/213941.158528:INFO:cefpython_app.cpp(199)] [Browser process] OnBeforeChildProcessLaunch() command line: /Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/subprocess --type=gpu-process --no-sandbox --framework-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework --log-file=debug.log --log-severity=info --resources-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework/Resources --lang=en-US --disable-gpu-shader-disk-cache --gpu-preferences=KAAAAAAAAACAAIAAAQAAAAAAAAAAAGAAEAAAAAAAAAAAAAAAAAAAADgBAAAmAAAAMAEAAAAAAAA4AQAAAAAAAEABAAAAAAAASAEAAAAAAABQAQAAAAAAAFgBAAAAAAAAYAEAAAAAAABoAQAAAAAAAHABAAAAAAAAeAEAAAAAAACAAQAAAAAAAIgBAAAAAAAAkAEAAAAAAACYAQAAAAAAAKABAAAAAAAAqAEAAAAAAACwAQAAAAAAALgBAAAAAAAAwAEAAAAAAADIAQAAAAAAANABAAAAAAAA2AEAAAAAAADgAQAAAAAAAOgBAAAAAAAA8AEAAAAAAAD4AQAAAAAAAAACAAAAAAAACAIAAAAAAAAQAgAAAAAAABgCAAAAAAAAIAIAAAAAAAAoAgAAAAAAADACAAAAAAAAOAIAAAAAAABAAgAAAAAAAEgCAAAAAAAAUAIAAAAAAABYAgAAAAAAABAAAAAAAAAAAAAAAAUAAAAQAAAAAAAAAAAAAAALAAAAEAAAAAAAAAAAAAAADAAAABAAAAAAAAAAAAAAAA0AAAAQAAAAAAAAAAAAAAAPAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAABIAAAAQAAAAAAAAAAAAAAATAAAAEAAAAAAAAAABAAAABQAAABAAAAAAAAAAAQAAAAsAAAAQAAAAAAAAAAEAAAAMAAAAEAAAAAAAAAABAAAADQAAABAAAAAAAAAAAQAAAA8AAAAQAAAAAAAAAAEAAAAQAAAAEAAAAAAAAAABAAAAEgAAABAAAAAAAAAAAQAAABMAAAAQAAAAAAAAAAMAAAAFAAAAEAAAAAAAAAADAAAACwAAABAAAAAAAAAAAwAAAAwAAAAQAAAAAAAAAAMAAAANAAAAEAAAAAAAAAADAAAADwAAABAAAAAAAAAAAwAAABAAAAAQAAAAAAAAAAMAAAASAAAAEAAAAAAAAAADAAAAEwAAABAAAAAAAAAABQAAAAUAAAAQAAAAAAAAAAUAAAALAAAAEAAAAAAAAAAFAAAADQAAABAAAAAAAAAABQAAAA8AAAAQAAAAAAAAAAUAAAAQAAAAEAAAAAAAAAAFAAAAEgAAABAAAAAAAAAABQAAABMAAAAQAAAAAAAAAAYAAAAFAAAAEAAAAAAAAAAGAAAACwAAABAAAAAAAAAABgAAAA0AAAAQAAAAAAAAAAYAAAAPAAAAEAAAAAAAAAAGAAAAEAAAABAAAAAAAAAABgAAABIAAAAQAAAAAAAAAAYAAAATAAAA --framework-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework --log-file=debug.log --log-severity=info --resources-dir-path=/Applications/anaconda3/envs/electrolens/lib/python3.7/site-packages/cefpython3/Chromium Embedded Framework.framework/Resources --lang=en-US


[0515/213941.184387:INFO:cef_log.cpp(8)] [Browser process] GetPyBrowser(): create new PyBrowser, browserId=1


[0515/213941.184448:INFO:cef_log.cpp(8)] [Browser process] CefBrowser::CreateBrowserSync() succeeded


[0515/213941.184472:INFO:cef_log.cpp(8)] [Browser process] CefBrowser window handle = 140624771323600


[0515/213941.184981:INFO:cef_log.cpp(8)] [Browser process] SendProcessMessage(): message=DoJavascriptBindings, arguments size=1


[0515/213941.185021:INFO:cef_log.cpp(8)] [Browser process] MessageLoop()
lxiangyun93
  • 77
  • 1
  • 7
  • Have you tried running official examples? – Czarek Tomczak May 19 '20 at 10:43
  • @CzarekTomczak Thanks for your reply! I'm not very familiar with CEF and I developed my script based on the hello_world.py example. Although the hello_world example worked fine on both my Windows and Mac machines, my script only works on my Windows machine. Could you take a look? I have updated my whole script in the question description – lxiangyun93 May 19 '20 at 21:39
  • Use the hello_world.py example and modify it by adding one line at a time of your changes and test with each new line added to find which one causes the issue. I assume this is your whole script and it runs on main thread. – Czarek Tomczak May 25 '20 at 11:14

0 Answers0