好了,要讲的就这么多。
六、使用中用到的一些细节(下面的有用到的看看,不用的就不用看了)
1、crontab的运行目录是user的家目录
调用python脚本时,经常要用到引入某个自定义的包的操作,要引入这个包,需要先将该包的路径添加进环境变量(这边需要对python有所了解)。
例如:脚本路径是:/root/aaa/hello.py,你想在hello.py中引入/root/bbb/world.py,则你需要先在hello.py中将bbb包的路径添加进环境变量。
a、你可以在hello.py中使用绝对路径添加环境变量:
import sys
sys.path.insert(0, '/root/bbb/')
添加完环境变量,在hello.py中就可以直接引入world.py了
import world
如果没有添加环境变量定时执行脚本,那么python就不知道去哪里引入world,就会报错。
b、使用相对路径添加环境变量:
下面重点来了:当使用相对路径时,引入的包的相对位置是相对于运行目录而言,而不是文件本身的相对位置!
解释一下,运行目录不是你python脚本文件的路径,而是你执行python命令的路径。比如你在/root路径下运行下面这个脚本,那么你的运行目录就是/root。如果你在/root/ccc/ddd路径下执行这个命令,那么你的运行目录就是/root/ccc/ddd。
python /root/aaa/hello.py
如果要在/root/ccc/ddd下运行,/root/bbb对于/root/ccc/ddd的相对路径是:
import sys
sys.path.insert(0, '../../bbb')
#..代表父目录,所以..代表工作路径/root/ccc/ddd的父目录/root/ccc,
#../..代表父目录的父目录/root,../../bbb代表/root/bbb
添加完环境变量,在hello.py中也可以直接引入world.py了:
import world
重点!重点!下面这个问题!!
使用crontab定时执行python脚本时的运行目录是什么?
答:是你这个用户的家目录!定时执行脚本,例如root用户那就是/root。爱玛呀,终于绕回来了!
别问我为啥写了一大段跟本文主题好像关系不是很大的内容。我就是因为这个问题,引入包时老是报错,搞了好半天!写下来给后来人借鉴,防止再踩这个坑。
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!