gpt4 book ai didi

python - 如何使用 Pipenv 运行 cron 作业?

转载 作者:行者123 更新时间:2023-12-02 00:10:48 33 4
gpt4 key购买 nike

为了演示我遇到的问题,我将使用这个简单的函数,该函数位于 /Users/X/Code/python/example/start.py:

def say_hello(name):
print("Saying hello to {}".format(name))

say_hello("John")

我正在使用 pipenv 来设置我的软件包和环境。在此文件夹中(start.py 旁边),我还有其他四个文件 - PipfilePipfile.lock.envlog.txt

当我运行 pipenv run python start.py 时,一切正常并得到输出。

现在我希望这个脚本每分钟运行一次,所以我使用 crontab -e 设置了一个 cron 作业,这是我最初的内容:

* * * * */usr/local/bin/pipenv 运行 python/Users/X/Code/python/example/start.py >>/Users/X/Code/python/example/log。文本2>&1

这在 log.txt 文件中给了我一个错误转储:

RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment.  Consult http://click.pocoo.org/python3/for mitigation steps.

This system lists a couple of UTF-8 supporting locales that
you can pick from. The following suitable locales where
discovered: af_ZA.UTF-8, am_ET.UTF-8, be_BY.UTF-8, bg_BG.UTF-8, ca_ES.UTF-8, cs_CZ.UTF-8, da_DK.UTF-8, de_AT.UTF-8, de_CH.UTF-8, de_DE.UTF-8, el_GR.UTF-8, en_AU.UTF-8....

经过大量谷歌搜索后,我得出结论,环境没有设置正确的区域设置,因此我在 .env 文件中添加了如下所示的内容:

LC_ALL=en_GB.UTF-8
LANG=en_GB.UTF-8

然后我又花了几分钟一遍又一遍地查看 log.txt 中出现的相同错误,然后我意识到当我调用 /usr/local/bin/时pipelinev,它实际上需要正确的Pipfile来加载正确的环境。因此,我将我的 cron 更改为:

* * * * * cd /Users/X/Code/python/example && /usr/local/bin/pipenv run python /Users/X/Code/python/example/start.py >> /Users/X/Code/python/example/log.txt 2>&1

所以从技术上来说,现在应该cd进入文件夹,然后运行pipenv东西,但我仍然在我的日志中得到同样的错误 文件。

任何帮助将不胜感激。

最佳答案

尝试将 /usr/local/bin 添加到您的 PATH 中。看起来pipenv可能需要调用它所在路径中的其他应用程序。当 cron 运行作业时,它的环境与您登录 shell 时所获得的环境不同。

创建从 cron 调用的包装脚本可能更容易:

cd /Users/X/Code/python/example 
PATH=/usr/local/bin:$PATH
pipenv run python start.py >> /Users/X/Code/python/example/log.txt 2>&1

关于python - 如何使用 Pipenv 运行 cron 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990067/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com