激活venv并从shell脚本运行python脚本

2024-05-23 14:28:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在与crontab一起使用之前,我正在测试一个(python)bot脚本。有人建议我运行一个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。当我用“python3”打开解释器并尝试在激活venv时导入instapy时,它工作正常。以下是shell脚本代码:

#! /bin/bash

source /home/gsb/venv/bin/activate 

/usr/bin/python3 /home/gsb/socialbot.py

有人能帮忙吗?提前谢谢

我在digitalocean服务器上运行这个。Ubuntu 20.04


Tags: runpy脚本homebinvenvbotshell
1条回答
网友
1楼 · 发布于 2024-05-23 14:28:39

您的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

相关问题 更多 >