【发布时间】:2016-12-30 23:06:54
【问题描述】:
我正在尝试在 OS X 10.10.5 中使用 launchd 运行一个简单的脚本,但作业失败。我认为这与未正确设置权限/特权有关?
这是它抛出的错误代码:
Traceback(最近一次调用最后一次): 文件“/Users/John/Documents/AutoRun/OpenTwitter.py”,第 7 行,在 驱动程序 = webdriver.Firefox() init 中的文件“/Library/Python/2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/webdriver.py”,第 64 行 self.service = 服务(executable_path, firefox_binary=self.options.binary_location) init 中的文件“/Library/Python/2.7/site-packages/selenium-3.0.0.b2-py2.7.egg/selenium/webdriver/firefox/service.py”,第 44 行 log_file = open(log_path, "a+") IOError:[Errno 13] 权限被拒绝:'geckodriver.log' Exception AttributeError: "'Service' object has no attribute 'log_file'" in
<bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x10ca6bdd0>>被忽略
我确实在控制台 job.out 中得到了打印的“启动脚本”,我已经硬编码到我的脚本中,所以我假设 launchd 实际上正在启动脚本,但它遇到了 Selenium/Firefox 驱动程序的问题?这就是我的权限问题发挥作用的地方?
它在 IDE/run 和终端中运行良好。
这是我要运行的测试代码:
#!/usr/bin/python
from selenium import webdriver
print("start script")
driver = webdriver.Firefox()
driver.get("https://twitter.com/search?q=news&src=typd&lang=en")
print("twitter open, done")
P.List如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>JohnsJob.job</string>
<key>Program</key>
<string>/Users/John/Documents/AutoRun/OpenTwitter.py</string>
<key>StandardErrorPath</key>
<string>/tmp/JohnsJob.job.err</string>
<key>StandardOutPath</key>
<string>/tmp/JohnsJob.job.out</string>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>14</integer>
<key>Weekday</key>
<integer>3</integer>
</dict>
</array>
</dict>
</plist>
注意:我更改了此代码在 launchd 中运行的时间,以便进行测试。
【问题讨论】:
-
你完全正确;缺少权限会阻止您的脚本正确执行。我建议您也将 .plist 包含在您的问题中。
-
感谢您的反馈,我已将 p.list 代码添加到原始问题中,知道为什么权限设置不正确和/或如何/在什么文件上设置权限?跨度>
-
您是作为启动代理还是启动守护进程启动它,.plist 位于哪个目录?
-
它位于 /Users/John/Library/LaunchAgents - 我认为它是一个“用户代理”,这就是它在 launchd 中告诉我的(我是新手,所以不确定这是否正确答案)
-
这些可能很难在第一次就做好,可能需要尝试一些不同的东西。我将从 .plist 开始,也许尝试将
<key>Program</key><string>/Users/John/Documents/AutoRun/OpenTwitter.py</string>更改为<key>ProgramArguments</key> <array> <string>python</string> <string>/Users/John/Documents/AutoRun/OpenTwitter.py</string> </array>
标签: python python-2.7 selenium launchd selenium-firefoxdriver