Mac系统CronTab调度Pandas脚本提示Numpy依赖导入错误如何解决
问题原因
- Crontab运行时的环境变量和你登录系统后的用户环境变量不一致,默认调用的是系统路径下的Python 3.8,和你本地开发用的Python 3.9.7是两个完全独立的运行环境,第三方依赖包互不通用。
- Python 3.8对应的site-packages中安装的numpy版本和当前运行环境不兼容,导致C扩展导入失败,pandas依赖numpy所以同步报错。
- 你之前运行的原生Python写文件任务没有调用第三方依赖,不会触发版本和依赖不匹配的问题,所以运行正常。
解决方案
- 方案一:指定Crontab调用你本地正常使用的Python 3.9版本运行脚本
- 先在终端执行
which python3.9获取Python 3.9的绝对路径,比如返回结果为/usr/local/bin/python3.9 - 修改Crontab调度规则,用绝对路径执行脚本,示例规则:
* * * * * /usr/local/bin/python3.9 /脚本所在的完整绝对路径/main.py
- 先在终端执行
- 方案二:给Crontab默认调用的Python 3.8安装兼容的依赖
直接执行以下命令给Python 3.8重装匹配版本的依赖:/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --force-reinstall numpy==1.21.2 pandas - 验证方式:可在脚本开头加入以下代码,确认运行时的Python版本和路径是否符合预期:
import sys print(sys.version) print(sys.executable)
内容的提问来源于stack exchange,提问作者Steven Meesters
相关产品推荐
相关产品推荐

