【发布时间】:2015-02-05 04:01:44
【问题描述】:
我用 Java 开发了一个 Web 应用程序,它使用 Scrapy 来获取一些数据。为此,我从 Java 调用了一个 shell 脚本:
Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh");
p.waitFor();
其中包含
#!/bin/bash
cd mySpiderPath
echo "We are going tu run scrapy"
scrapy crawl mySpider
echo "done!"
运行后,两个“echo”都会被打印出来,但是scrapy什么都不做。如果我从 shell 运行 myScript.sh,它会完美运行......我很困惑!
我可以做些什么来尝试调试这种奇怪的行为?
编辑
我已将 myScript.sh 更改为运行 python 版本而不是 scrapy 命令,但它不起作用......所以,结论是这不是一个“scrapy 问题”,而是在调用它时是一个 bash 脚本问题来自Java ...有什么想法吗? (如果我从 shell 执行 myScript.sh 就可以了)
#!/bin/bash
cd mySpiderPath
echo "We are going tu run scrapy"
python --version
echo "done!"
【问题讨论】:
-
你确定你的进程中定义了scrapy命令吗?也许将完整路径放入二进制文件或确保您的 PATH 变量包含该二进制文件的路径。您可能可以回显 $PATH,我不知道 scrapy,但是您可以尝试执行其他操作,例如 scrapy -version 或 scrapy -help
-
我把
scrapy crawl mySpider换成了scrapy version还是不行……好像不识别scrapy命令,但是提示有错误。如果我从 shell 执行scrapy version,它工作正常 -
我已经按照你的建议编辑了我的问题@Mike
-
我会在脚本中添加 echo $PATH 以查看 PATH 变量的样子。如果scrapy目录(在python中执行?)不在PATH中,则需要导出PATH变量以包含scrapy/python目录