早上好,我在运行OSX El Capitan的Mac上玩启动守护进程。我已经在Python中制作了我希望在我的机器启动时运行的脚本(它应该通过网络摄像头拍摄照片并将其保存到我指定的目录中)。我已经制作了适当的plist,启动进入恢复模式以禁用csrutil,然后将plist添加到/ System / Library / LaunchDaemons。重启后,我看不到任何图片(绿色网络摄像头灯也没有打开)。
我检查了脚本的错误日志,发现python脚本抛出了一个错误,它无法导入CV2(ImportError:没有名为cv2的模块)。但是,我确实安装了cv2,并且在系统启动后它可以正常工作。我的脚本似乎能够加载其他模块(os,datetime和time),因为它们是在cv2之前导入的。
这是一项额外的安全功能吗?有办法解决这个问题吗?如果有解决方法,即使启用了csrutil,它是否也能正常工作?我不想乱用那些禁用的,我只是禁用它来对LaunchDaemons目录进行必要的更改,然后重新启用它。我在禁用csrutil的情况下重新启动并仍然收到导入错误,因此它似乎不是那样(至少据我所知)。
谢谢!
编辑:更多的谷歌搜索让我发现在我的守护进程的plist中指定的python路径不是与openCV关联的那个。但是,快速回显$ PYTHONPATH给了我/usr/local/lib/python2.7/site-packages,当放入plist时不再在启动时出错,但现在似乎根本没有执行。< / p>
此外,我已经尝试将我写的目录更改为/ tmp /,因为所有用户都可以访问该目录,但仍无济于事。
答案 0 :(得分:3)
问题:但现在似乎根本没有执行。
添加一些日志记录到文件,以验证您的脚本是否正在运行以及距离。
例如:
log = open('/tmp/my_script', 'w')
log.write('after imports')
答案 1 :(得分:1)
您是否曾尝试which python
来查看使用的实际Python版本是否是通过 brew 安装的版本(我假设您因为路径而执行了brew install python
在/usr/local
)下?
如果Python可执行文件不是/usr/local
下的那个,那么您可能遇到麻烦,请考虑通过 brew 安装不会替换默认系统Python。