繁体   English   中英

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

[英]Activate venv and run python script from shell script

在将它与 crontab 一起使用之前,我正在测试一个(python)机器人脚本。 有人建议我运行 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM