让MAC上的crontab运行anaconda安装的python脚本(找不到模块)

2024-10-04 15:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为一个用python编写的脚本设置crontab,这个脚本是通过Anaconda安装的。simple.py运行(它只是为一个演示加载一个模块),并且可以用pythona.py在终端中运行。 问题是如何获取python和导入模块的路径。你知道吗

我一直在尝试设置python目录的路径和PYTHONPATh,以及pandas所在的位置。我认为这是一个环境问题,但不知道这意味着什么。有什么想法吗?你知道吗

crontab是:

SHELL=/bin/sh
PYTHONPATH=/Users/Esel/anaconda3/bin/python
* * * * *  cd /Users/Esel/Documents/x/y/z && python a.py

python(测试)脚本:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 18 21:36:34 2019

@author: Esel
"""

import pandas

print('hello kitty')
# This is a test 

Crontab发送以下声明:

回溯(最近一次呼叫): 文件“a.py”,第3行,in 进口熊猫 ImportError:没有名为pandas的模块


Tags: 模块py路径目录脚本终端pandasbin
2条回答

有了来自一个流浪汉(thanx)的一些想法和另一个SOverflow问题(54564187),我想我已经开始运行了。你知道吗

SHELL=/bin/sh
PATH=$PATH/Users/Esel/anaconda3/bin:/Users/Esel/anaconda3/condabin:/Applications/anaconda3/bin:/Applications/anaconda3/bin:/Users/Esel/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
* * * * *  cd /Users/Esel/Documents/x/y/z && python a.py

这条路是从

echo $PATH

你在设定一个环境变量,cd'ing到一个目录,并调用一个解释器,所有这些都来自crontab。你知道吗

在这种情况下,我个人会发现创建一个小型包装器脚本(这里称为pyscript)来完成所有这些工作,并从crontab调用该脚本更为优雅:

$> cat /home/me/bin/pyscript
#!/bin/bash
# a.py needs module pandas in /foo/bar
export PYTHONPATH=/foo/bar
cd /Users/Esel/Documents/x/y/z || exit
python a.py

$> chmod ug+rx /home/me/bin/pyscript

$> cat /var/spool/cron/crontabs/me
...
* * * * *  /home/me/bin/pyscript

相关问题 更多 >

    热门问题