在将(python(bot脚本与crontab一起使用之前,我正在测试它。有人建议我运行一个shell脚本,在crontab中运行python脚本。为了让shell脚本运行,我需要激活venv。这就是问题所在。当我尝试运行run_socialbot.py时,我得到:
Traceback (most recent call last):
File "/home/gsb/socialbot.py", line 3, in <module>
from instapy import InstaPy
ModuleNotFoundError: No module named 'instapy'
即使在venv中安装了instapy。当我打开翻译时;蟒蛇3";并尝试在激活venv的同时导入instapy,它运行良好。这是shell脚本代码:
#! /bin/bash
source /home/gsb/venv/bin/activate
/usr/bin/python3 /home/gsb/socialbot.py
有人能帮忙吗?提前感谢
我在数字海洋服务器上运行这个。Ubuntu 20.04
您的shell脚本激活venv,但随后它显式调用绝对路径/usr/bin/python3
。这不是venv Python可执行文件。激活venv的全部目的是设置$PATH
,使python
指向venv解释器。
在包装脚本中,将其更改为:
python /home/gsb/socialbot.py
或者,您可以完全删除bash包装器脚本,并将venv shebang放入socialbot.py
中,然后直接在crontab中使用此Python文件。使文件可执行,并添加为第一行:
#!/home/gsb/venv/bin/python