我有一个由操作系统每 5 分钟执行一次的 python 脚本。
问题是它需要先激活我在 jdate
中为它创建的 /tmp
虚拟,才能使用安装在那里的 jdatetime
模块。
我尝试了 #1 和 #2,但都没有成功。在终端中执行脚本给我错误。
#!/usr/bin/env python
# 1:
import os
os.system(f"cd /tmp ; source jdate/bin/activate")
# returns error: ModuleNotFoundError: No module named 'jdatetime'
# 2:
import subprocess
subprocess.check_output(f"cd /tmp ; source jdate/bin/activate", shell=True)
# returns error: ModuleNotFoundError: No module named 'jdatetime'
答案 0 :(得分:0)
AFAIK,venv 激活所做的只是将 venv/bin 文件夹路径添加到 PATH 环境变量中。如果你使用 CRON 来调度执行,你试过这个吗?:
*/5 * * * * (cd /tmp/jdate/bin && python path/to/project/myapp.py)