使用Python发射守护程序(OSX)导入模块



早上好,我正在Mac Running Osx El Capitan上玩守护程序。我已经在Python中制作了该脚本,我想在机靴时运行(它应该通过网络摄像头拍摄图片并将其保存到我指定的目录(。我已经制作了适当的PLIST,被启动到恢复模式以禁用Csrutil,然后将PLIST添加到/System/Library/LaunchDaemons中。重新启动后,我看不到任何图片(绿色网络摄像头灯也没有打开(。

我检查了该脚本的错误日志,发现Python脚本引发了无法导入CV2的错误(Infrorror:no模块名为CV2(。但是,我确实已经安装了CV2,并且在系统启动后起作用。我的脚本似乎能够加载其他模块(OS,DateTime和时间(,就像在CV2之前导入。

这是一个附加的安全功能吗?有没有办法解决这个问题?如果有解决方法,即使启用了csrutil,它也能起作用吗?我不想与那个残疾人一起跑来跑去,我只是将其禁用以对启动Daemons目录进行必要的更改,然后重新启用它。我确实在禁用CSRUTIL的情况下重新启动,但仍会收到导入错误,因此似乎不是那样(至少据我所知(。

谢谢!

编辑:更多的谷歌搜索使我发现,PLIST在我的守护程序中指定的Python路径不是与OpenCV关联的python路径。但是,快速回声$ pythonpath给我/usr/local/lib/python2.7/site-packages,当将其放入PLIST时,它不再在启动上出现错误,但现在似乎根本没有执行。<<<<<<<<<<<<<<<<<<<<<<

另外,我尝试更改写入为/tmp/的目录,因为所有用户都可以访问它,但仍然无济于事。

问题:但是现在似乎根本没有执行。

在文件中添加一些日志记录,以验证您的脚本正在运行,以及多远。

例如:

log = open('/tmp/my_script', 'w')
log.write('after imports')

您是否尝试执行which python来查看实际使用的Python版本是否是通过 brew 安装的版本(我假设您因为路径而做了brew install python/usr/local下(?

如果Python可执行文件不是/usr/local下的python,那么您可能会遇到麻烦,请考虑到通过 brew 安装不会替换默认系统Python。

最新更新