Casper Python脚本失败了`/ usr / bin / python`但不是'python`

时间:2014-07-18 11:48:23

标签: python cron casperjs

当我运行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路径以及脚本路径) 。“

1 个答案:

答案 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')