【发布时间】:2020-04-22 12:29:32
【问题描述】:
我可以通过 ssh 登录我的 AWS EC2 服务器并输入:
cd /opt/myWebApp
sudo python3 /opt/myWebApp/manage.py myCronJob
...它运行。
我也可以通过 crontab 启动相同的脚本:
0 */6 * * * sudo python3 /opt/myWebApp/manage.py myCronJob --settings=server.settings.production
但是当我尝试在 SystemD 中使用 .service 文件运行它时:
ExecStart='/usr/bin/python3.7' /opt/myWebApp/manage.py myCronJob --settings=server.settings.production
...我明白了:
ImportError:无法导入 Django。您确定它已安装并在您的 PYTHONPATH 环境变量中可用吗?您忘记激活虚拟环境了吗?
$PYTHONPATH 和 $VIRTUAL_ENV 为空。 /opt/myWebApp/server_venv 也是空的。 /usr/bin/python3.7 有一个 python,但我在 SystemD .service 文件中引用了它,如上所述,它抛出了那个错误。
我错过了什么?
【问题讨论】:
-
你能确认
python3.7和python3指向同一个环境吗? -
我如何检查才能找出答案?
-
ls -l /usr/bin/python*,which python3 -
我运行了
cd /usr/bin/和which python3,它返回了/usr/bin/python3。但是运行ls -l pyth*.*显示没有名为python3的文件——只有python3.6、python3.7等。??? -
@VikR
ls -l pyth*.*找不到python3,因为它的名称中没有点。试试ls -l /usr/bin/pyth*。
标签: python django unix amazon-ec2 systemd