在Python第三方软件包导入中,Chrome Native Messaging“本机主机已退出。”

时间:2016-04-08 05:55:38

标签: python google-chrome google-chrome-extension

我正在使用Chrome扩展程序,该扩展程序使用本机消息传递功能与Python脚本进行通信。作为Python脚本的一部分,我需要观察文件系统,因此我将watchdog作为第三方依赖项。我已经使用pip安装了这个包,全局和使用virtualenv,我在我的脚本中使用以下行提取两个类:

from watchdog.events import PatternMatchingEventHandler
from watchdog.observers import Observer

这一切都非常简单。这就是它变得奇怪的地方。如果我在命令行上使用python运行脚本,它运行正常。此外,如果我使用以下命令从命令行启动Chrome:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome

Chrome扩展程序成功调用了本机脚本。但是,如果我正常启动Chrome(只需点击Chrome应用程序图标),我就会在启动时收到以下错误:

Native host has exited.

如果我从我的脚本中删除两个看门狗导入行,它运行正常。我很困难,因为我似乎没有办法调试问题,因为当我从终端启动脚本时它会起作用。

1 个答案:

答案 0 :(得分:1)

Debugging native messaging表示错误Native host has exited.归因于:

  

在Chrome读取邮件之前,本地邮件主机的管道已损坏。这很可能是从您的本机消息传递主机启动的。

如文件中所述:

  

支持本机消息传递的本机应用程序必须注册知道如何与扩展进行通信的本机消息传递主机。应用程序必须安装清单文件,该文件必须是有效的JSON并包含必需的字段定义本机消息传递主机配置以注册主机,如下例所示:

{
  "name": "com.my_company.my_application",
  "description": "My Application",
  "path": "C:\\Program Files\\My Application\\chrome_native_messaging_host.exe",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/"
  ]
}

您还可以检查examples/api/nativeMessaging示例应用程序,该应用程序使用本机消息传递与用作本机消息传递主机的Python脚本进行通信。