【问题标题】:CEFPython won't initialized when called from an application从应用程序调用时,CEFPython 不会初始化
【发布时间】:2018-03-09 14:22:18
【问题描述】:

我有一个非常具体的问题。 我正在尝试找出一种在我的应用程序中嵌入 HTML 浏览器的方法,以便使用包含的 javascript 显示一些生成的 HTML 内容。

我试图用 wx.html2 来做,但 javascript 部分似乎不起作用。 所以我决定以提供的 wxPython.py 演示为例,尝试一下 CEFPython。

起初,它在我设计的 UI 中效果很好。

但是,问题在于该 UI 旨在从另一个应用程序调用,作为一种“插件 UI”。当从这个应用程序启动我的 wxPython UI 时,它会在 cef 初始化后立即崩溃(通过:

sys.excepthook = cef.ExceptHook
settings = {
    "debug": True,
    "log_severity": cef.LOGSEVERITY_INFO,
   "log_file": "debug.log",
}
cef.Initialize(settings=settings)
app = CefApp(False)
app.MainLoop()
del app
cef.Shutdown()

我不断收到此错误:

Python exception: AttributeError
'module' object has no attribute 'argv'
Traceback (most recent call last):
  File "<string>", line 248, in <module>
  File "<string>", line 36, in main
  File "cefpython_py27.pyx", line 626, in cefpython_py27.Initialize 
(cefpython_py27.cpp:99136)
AttributeError: 'module' object has no attribute 'argv'

所以最后我有两个问题:

  1. wx.html2 有没有办法显示嵌入 javascript 的 HTML 内容
  2. 如果没有,您是否知道什么会导致启动的 UI 崩溃?我想这是一个线程问题,但我什至不确定。

顺便说一句,请原谅我的英语错误,因为我不是本地人。



【问题讨论】:

    标签: python wxpython chromium-embedded cefpython


    【解决方案1】:

    您的 Python 环境似乎没有以标准方式运行,您没有详细说明您的 Python 代码是如何调用的。

    cefpython中的错误是在这一行抛出的:

    if "--debug" in sys.argv:
        application_settings["debug"] = True
    

    https://github.com/cztomczak/cefpython/blob/bbf3597ba47f72db66cf304ab8eb3ccfc3a7130c/src/cefpython.pyx#L631

    您必须找出您的 Python 没有定义“sys.argv”的原因。您可以使用以下代码轻松解决此问题:sys.argv = [],然后再调用 cef.Initialize,,但是由于您的非标准 Python 环境,您可能仍会遇到其他问题。

    【讨论】:

    • 嗯,它似乎解决了这个问题。不确定这样的解决方案是否可行,因为我对它不是很熟悉。无论如何,感谢您的快速回答。
    • @ThylowZ 如果这解决了您的问题,请选择已接受的答案并给它+1。
    猜你喜欢
    • 2021-11-24
    • 2017-01-10
    • 2019-06-10
    • 2011-01-26
    • 2014-07-29
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多