Crontab - Linux - EC2 - Python - 没有名为“pandas”的模块

Crontab - Linux - EC2 - Python - 没有名为“pandas”的模块

我正在尝试通过 EC2 上的 crontab 运行 Python 脚本(它是一个网络抓取)。但它不起作用。

这是我的任务:

SHELL = /bin/bash
PATH = /usr/local/sbin:/usr/local / bin: / sbin: / bin: / usr / sbin: / usr / bin
* * / 2 * * * / usr / bin / python /home/ec2-user/LATAM_v1.py

我收到系统发来的电子邮件,说 pandas 未安装。

但已经安装好了。

我也在 shell 中直接运行该脚本:

/home/ec2-user/LATAM_v1.py
/ usr / bin / python home / ec2-user / LATAM_v1.py

两种方法都有效。

我已经检查了 cron 和守护进程的状态(如果它们正在运行),确实如此。

错误如下:

From [email protected]  Sun Apr 12 10:10:02 2020
Return-Path: <[email protected]>
Received: from ip-172-31-3-2.sa-east-1.compute.internal (localhost [127.0.0.1])
        by ip-172-31-3-2.sa-east-1.compute.internal (8.14.4/8.14.4) with ESMTP id 03CDA2Lb008039
        for <[email protected]>; Sun, 12 Apr 2020 10:10:02 -0300
Received: (from root@localhost)
        by ip-172-31-3-2.sa-east-1.compute.internal (8.14.4/8.14.4/Submit) id 03CDA2W8008038;
        Sun, 12 Apr 2020 10:10:02 -0300
Date: Sun, 12 Apr 2020 10:10:02 -0300
Message-Id: <202004121310.03CDA2W8008038@ip-172-31-3-2.sa-east-1.compute.internal>
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@ip-172-31-3-2> /usr/bin/python /home/ec2-user/LATAM_v1.py
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

Traceback (most recent call last):
  File "/home/ec2-user/LATAM_v1.py", line 10, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'

This is the version of the machine:
NAME = "Amazon Linux AMI"
VERSION = "2018.03"
ID = "amzn"
ID_LIKE = "rhel fedora"
PRETTY_NAME = "Amazon Linux AMI 2018.03"

我已经查看了 Stackoverflow,得到了很多答案等等,但这里没有任何作用。

我对 Linux 不太熟悉。如果有人知道如何解决并一步步解释,我将不胜感激。

非常感谢。

答案1

该问题可能是 Python 路径问题。Python 包可以安装在多个位置:

/home/username/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages/
~/project_path/venv/lib/python3.6/dist-packages/

您可能在第一个位置安装了 pandas,但 cron 运行时,python 路径中没有该位置。您可以通过在 cron 脚本中设置 python 路径来解决这个问题(使用正确的 python 版本):

 PYTHONPATH=/home/username/.local/lib/python3.6/site-packages

或者你可以全局安装 pandas:

 sudo -H pip install pandas

或者你可以学习使用虚拟环境在这种情况下,您需要先激活环境,可以直接在由 && 分隔的 cron 中激活,也可以创建一个 shell 脚本来激活并运行 Python,然后从 cron 调用该脚本。如果您有多个项目依赖于不同版本的 Python 或库,这是处理该问题的首选方法。

相关内容