cron 中的 PYTHONPATH 问题

cron 中的 PYTHONPATH 问题

我一直在尝试使用 cron 自动运行 Python 脚本,以了解 PATH。

首先我尝试使用用户 crontab:

crontab -e

我这样设置 crontab:

PYTHONPATH=/home/dpa/anaconda3/bin/python
PATH=/home/dpa/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
36 15 * * * python /home/dpa/PycharmProjects/Parser/Parser.py >> /tmp/mycommand.log 2>&1

该脚本不运行,并且出现以下错误:

/bin/sh: 1: python: not found

然后我尝试以超级用户身份:

sudo crontab -e

我这样设置 cronetab:

PYTHONPATH=/home/dpa/anaconda3/bin
PATH=/home/dpa/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 
43 15 * * * su - dpa python /home/dpa/PycharmProjects/Parser/Parser.py >> /tmp/mycommand.log 2>&1

现在 STDERR 看起来像这样:

-su: python: No such file or directory

答案1

首先,由于您有root访问权限,我建议您在而不是在主目录中进行编译和anaconda构建。/opt

您实际上所做的是将变量 PATH 设置为等于该目录列表,并将 PYTHONPATH 设置为等于anaconda导致问题的可执行文件所在的目录。

为了得到你想要的,更好的方法是成为 root,然后假设你的 shell 是bash

export PATH=/home/dpa/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/home/dpa/anaconda3/lib
export PYTHONHOME=/home/dpa/anaconda3
bash

这将设置路径和库以在包含 anaconda python 及其库的目录中查找并bash启动一个新会话。然后您可以将python命令添加到crontab.

如果您打算像root这样运行它,那么您不需要su -,而且最好以您拥有的方式运行它,crontab并且在您的用户环境中设置,而不是在 的环境中设置。rootPYTHONPATHPYTHONHOMEroot

如果更好的话,您可以将它们全部放入脚本中,然后将脚本本身添加到crontab.

我再次建议将 anaconda 安装到/opt用户的主目录中,而不是安装到用户的主目录中。

相关内容