Crontab 没有名为 Pandas 的模块

Jus*_*tin 5 python cron

出于某种原因,Cron 不会处理这个并一直告诉我没有安装熊猫(每当我正常运行我的代码时)

我收到这封邮件:

  Subject: Cron <user@Justins-MBP-4> PYTHONPATH=/Users/user/Library/Python/3.6/lib/python/site-packages python  ~/downloads/random/milbtrans.command
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
X-Cron-Env: <USER=user>
X-Cron-Env: <HOME=/Users/user>
Date: Tue,  8 May 2018 11:18:01 -0400 (EDT)

Traceback (most recent call last):
  File "/Users/user/downloads/random/milbtrans.command", line 2, in <module>
    import requests, csv, pandas, openpyxl, datetime, time
ImportError: No module named pandas
Run Code Online (Sandbox Code Playgroud)

将 Pandas 更改为已修复,但现在出现此错误:

 Traceback (most recent call last):
  File "/Users/user/downloads/random/milbtrans.command", line 2, in <module>
    import requests, csv, sys, pandas, openpyxl, datetime, time
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/__init__.py", line 19, in <module>
    "Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['numpy']
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

小智 5

您还没有发布您的 crontab,但我怀疑您没有使用 Python 3.6 的正确路径。您的 cron 错误电子邮件显示 cron 使用的 PATH 是 /usr/bin 和 /bin。你的 cron 命令只调用“python”。因此 cron 将使用其 PATH 来尝试解析“python”。

这些位置中是否有可执行文件或 Python 3.6 的链接?

$ /usr/bin/python如果您运行:或$ /bin/python从您自己的登录名运行,您会看到什么?我猜测其中一个、另一个或两者都会启动不同版本的 Python(即 Python 2.xx)

  1. 找出python3的确切安装位置。示例(您的结果可能会有所不同):

$ which python3 /usr/local/bin/python3

  1. 在 crontab 中,当您指定 python 可执行文件和脚本的路径(也使用绝对路径)时,请使用相同的绝对路径。

定时任务

0 0 * * * /usr/local/bin/python3 /Users/user/downloads/random/milbtrans.command
Run Code Online (Sandbox Code Playgroud)

我建议你先在没有 PYTHONPATH 的情况下尝试一下。

您还可以更优雅地管理 cron 执行上下文的环境变量(即通过 crontab 本身或“包装器”shell 脚本导出正确的 PATH 环境变量),这也可以解决问题,但基于您共享的内容我相信这是解决您当前问题的最简单方法。