CEFPython在从应用程序调用时不会初始化

时间:2018-03-09 14:22:19

标签: python wxpython chromium-embedded cefpython

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

我尝试用wx.html2来做,但javascript部分似乎无法正常工作。 所以我决定尝试一下CEFPython,举例说明提供的wxPython.py演示。

起初,它在我设计的用户界面中运行良好。

但问题是,这个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崩溃的原因是什么?我想这是一个线程问题,但我甚至不确定。
  3. 请原谅我的英语错误,因为我不是本地人。

1 个答案:

答案 0 :(得分: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环境,您可能仍会遇到其他问题。