背景
我写了一个脚本,用于执行 python 项目。脚本前面的 git 命令是能执行的,但是到了 pipenv 就不会执行了。
但是手动运行脚本却能正确执行
问题原因
对于手动能运行,crontab 执行就不行,不用问了,99% 的可能就是环境除了问题。crontab 在执行时,找不到 pipenv,所以执行失败。
解决方法
解决方法有两种:
- 给 crontab 添加环境变量,例如把 pipenv 的路径添加到 crontab
- 执行 pipenv 命令时,指定 pipenv 的路径
给 crontab 添加环境变量
略过,没找到合适方法,有兴趣可以自己找找
指定 pipenv 的路径
首先看看我的脚本是怎么使用 pipenv 的
pipenv run python main.py
命令分解:
- pipenv run:进入虚拟环境,执行 python 命令,执行后退出虚拟环境
- python main.py:执行 main.py 文件
由于 crontab 找不到 pipenv,所以整个 shell 命令都没有运行。
我们首先要找到 pipenv 路径,可以使用:whereis pipenv,输出:「pipenv: /usr/local/bin/pipenv」
编辑 shell 脚本,指定 pipenv:
/usr/local/bin/pipenv run python main.py
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于