未从Linux Centos上的crontab激活virtualenv

2024-06-01 04:40:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正面临一个奇怪的问题。你知道吗

我需要编写一个crontab来调用python脚本,但我需要先激活virtualenv。这是我写的crontab:

SHELL = /bin/bash
MAILTO="mail@mail.com"
*/15 * * * * source /srv/python/virtualenvs/proj/bin/activate && /srv/python/virtualenvs/proj/bin/python3.6 /srv/python/proj/Scripts/scheduling.py

脚本scheduling.py尝试使用Cx_Oracle从oracle数据库导入数据。Crontab给了我一个错误:

[2018-12-05 14:45:02] ERROR - DB connection error: DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html

所以我显然想到了一个与Oracle和library cx_Oracle相关的错误。 奇怪的是如果我进入linux shell

source /srv/python/virtualenvs/proj/bin/activate

然后键入python打开python shell,然后:

import cx_Oracle
import pandas
con = cx_Oracle.connect('parameter_connection')
query = 'select * from tab1 fetch first 5 rows only'
pd.read_sql(query, con = con)

它工作,并给我查询结果。我怀疑在crontab中virtualenv没有被正确激活。你知道吗

有什么想法吗?谢谢


Tags: py脚本sourcebinvirtualenvmailvirtualenvscon
1条回答
网友
1楼 · 发布于 2024-06-01 04:40:29

在crontab中

*/15 * * * * /home/user/script.sh > /dev/null 2>&1

英寸脚本.sh

#!/bin/bash
source /srv/python/virtualenvs/proj/bin/activate
/srv/python/virtualenvs/proj/bin/python3.6 /srv/python/proj/Scripts/scheduling.py

相关问题 更多 >