壳牌脚本赢得';t更改目录并执行python脚本
所以我有一个文件success.sh壳牌脚本赢得';t更改目录并执行python脚本,python,ubuntu,chron,Python,Ubuntu,Chron,所以我有一个文件success.sh python3 /home/ubuntu/foo.py 这在Cron中运行,具有: * * * * * /home/ubuntu/success.sh >> /tmp/cron_output 其中foo.py只是 print("DSVSDVDSVSDFDS") 但是,只要我尝试运行我真正想要运行的内容并将success.sh更改为以下内容: cd "/home/ubuntu/Amazon to Ebay v1.7/Catalogu
python3 /home/ubuntu/foo.py
这在Cron中运行,具有:
* * * * * /home/ubuntu/success.sh >> /tmp/cron_output
其中foo.py只是
print("DSVSDVDSVSDFDS")
但是,只要我尝试运行我真正想要运行的内容并将success.sh更改为以下内容:
cd "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/" && python3 "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price-arbitrage-bot.py"
* * * * * /home/ubuntu/success.sh > /tmp/cron_output 2>&1
文件中未记录任何输出
我想知道它是否真的在运行。为什么没有输出任何内容??success.sh作为一个独立程序运行良好
编辑:
我已将crontab更改为以下内容:
cd "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/" && python3 "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price-arbitrage-bot.py"
* * * * * /home/ubuntu/success.sh > /tmp/cron_output 2>&1
所以它输出错误。现在它显示在我的py脚本中找不到模块
Traceback (most recent call last):
File "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price- arbitrage-bot.py", line 23, in <module>
from paypal import PayPalInterface
ModuleNotFoundError: No module named 'paypal'
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/Amazon to Ebay v1.7/catalog 2/Ebay price-套利bot.py”,第23行,在
从paypal导入PayPalInterface
ModuleNotFoundError:没有名为“paypal”的模块
但是它作为一个独立的文件运行得很好,所以我不知道发生了什么。因为您提到了python文件的完整路径,所以不需要对该路径执行cd操作 另外,你能检查一下路径是否正确吗?因为,&&operator的工作方式是只有在cd命令成功时才执行python3命令。因此,如果路径不正确,cd就会失败,python3永远不会执行
或者,您可以使用“;”而不是“&&”,它保证python3的执行,而不管“cd”命令的结果如何。Python在当前目录和标准模块路径中查找模块。从cron运行时,进程不在主目录中,因此需要添加路径。在python文件中,执行以下操作:
import sys
sys.path.insert(0, "/path/to/your/paypal/module")
它只使用绝对路径,如上面代码所示。您的权利,这是一个打字错误。正在更正。请发布错误的全文。@stark完成//当使用
import
时,python在sys.path
中查找模块(import sys
以获取sys.path
)。如果您可以在一个环境(例如命令行)中找到模块,而在另一个环境(例如cron作业)中找不到模块,则两个环境中的sys.path
可能不同。另请参见PYTHONPATH
环境变量。Cron作业通常有一个非常小的环境(printenv
,手册页会有所帮助)。我已经按照您的建议进行了尝试,并删除了cd….我还为crontab中的任何错误添加了重定向….现在输出显示模块没有导入到我的py脚本中。但它作为一个独立软件运行良好!能否尝试为python3可执行文件提供绝对路径?看起来CRON环境无法找到python3可执行文件。