我正在测试一个(python)机器人脚本,然后将其与 crontab 一起使用。建议我运行一个在 crontab 中运行 python 脚本的 shell 脚本。为了运行 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'
Run Code Online (Sandbox Code Playgroud)
即使 instapy 安装在 venv 中。当我用“python3”打开解释器并尝试在激活 venv 时导入 instapy 时,它工作正常。这是shell脚本代码:
#! /bin/bash
source /home/gsb/venv/bin/activate
/usr/bin/python3 /home/gsb/socialbot.py
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?提前致谢
我在 digitalocean 服务器上运行它。乌班图20.04
您的 shell 脚本激活 venv 但随后显式调用绝对路径/usr/bin/python3。那不是 venv Python 可执行文件。激活 venv 的全部目的是设置$PATH指向pythonvenv 解释器。
在您的包装脚本中,将其更改为:
python /home/gsb/socialbot.py
Run Code Online (Sandbox Code Playgroud)
或者,您可以完全删除 bash 包装器脚本,并将 venv shebang 放入socialbot.py,然后直接在 crontab 中使用此 Python 文件。使文件可执行,并添加为第一行:
#!/home/gsb/venv/bin/python
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5865 次 |
| 最近记录: |