首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cron中的PYTHONPATH问题

cron中的PYTHONPATH问题
EN

Unix & Linux用户
提问于 2018-06-18 13:53:14
回答 1查看 5K关注 0票数 0

为了理解路径,我一直试图使用cron自动运行Python脚本。

首先,我尝试使用用户crontab:

代码语言:javascript
复制
crontab -e

我建立了这样的crontab:

代码语言:javascript
复制
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

脚本不运行,我得到以下错误:

代码语言:javascript
复制
/bin/sh: 1: python: not found

然后我试着作为超级用户:

代码语言:javascript
复制
sudo crontab -e

我设立了这样的cronetab

代码语言:javascript
复制
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看起来是这样的:

代码语言:javascript
复制
-su: python: No such file or directory
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-06-18 15:00:54

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

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

要得到您想要的,更好的方法是变成根,然后假设您的shell是bash

代码语言:javascript
复制
export PATH=/home/dpa/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/home/dpa/anaconda3/lib
export PYTHONHOME=/home/dpa/anaconda3
bash

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

如果您打算以root的形式运行它,那么您就不需要su -,而且最好是在crontab of root中运行它,因为您拥有它的方式,PYTHONPATHPYTHONHOME设置在您的用户环境中,而不是在root环境中。

如果更好,可以将其全部放入脚本中,只需将脚本本身添加到crontab中即可。

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

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/450448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档