当我运行python deamon.py
时,测试套件运行正常;但是,当我使用/usr/bin/python
运行它时,会抛出Casper.waitfor()
超时的警告,因为它显然无法读取DOM元素。
// Fails:
/usr/bin/python /path_to_deals/deals/deamon.py
// Succeeds:
python /path_to_deals/deals/deamon.py
以下是目录结构:
优惠/
deamon.py test.js
deamon.py
是在casperjs
文件中启动test.js
测试套件的脚本。
任何人都可以解释为什么python
有效但/usr/bin/python
没有 - 以及我如何解决这个问题?
从讨论中更新:“当我执行python deamon.py
时,只有当我将它放入Cron时才会失败(我必须指定确切的python路径以及脚本路径) 。“
答案 0 :(得分:2)
正如Arcege解释here,“Cron对你的shell一无所知;它是由系统启动的,所以它的环境很小。如果你想要什么,你需要有带来了你自己。“
最有可能的是,在你的会话中设置了一些被Cron忘记的变量。以下是三个选项:
1。)您可以设置特定命令的环境变量,Nischal执行here。
要点:
* * * * * . $HOME/.profile; python /path/to/myScript.py
2。)为整个Crontab 设置一个环境变量here。
要点:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * python /path/to/myScript.py
(More关于在Cron中设置环境变量。)
3。)在脚本本身设置环境变量。 Python的urllib2
显然需要http_proxy
变量,所以如果你使用它,你可能会遇到问题。您可以使用os
设置它(source)或 - 可能更好 - 您可以指定urllib2
应该使用的代理ZelluX {{3} {}为ProxyHandler
。
要点:
proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.example.com')