Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Linux Centos上未从crontab激活virtualenv_Python_Linux_Cron - Fatal编程技术网

Python 在Linux Centos上未从crontab激活virtualenv

Python 在Linux Centos上未从crontab激活virtualenv,python,linux,cron,Python,Linux,Cron,我正面临一个奇怪的问题 我需要编写一个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/Script

我正面临一个奇怪的问题

我需要编写一个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\u 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相关的错误。 奇怪的是,如果我进入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没有正确激活


有什么想法吗?感谢crontab中的

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

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

在crontab中

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

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

是的,但我发现问题是crontab有一个最小的环境,而客户端oracle路径应该添加到脚本中。我不知道为什么我投了反对票。我认识到这个问题可能会产生误导(是关于crontab还是关于Cx_oracle或virtualenv?),但对我来说,您需要在crontab调用的脚本中指定路径一点也不明显。没问题,它不是针对您的。。我有一种感觉,有时人们会毫无警告地使用downvote是的,但我发现问题是crontab有一个最小的环境,而客户端oracle路径应该添加到脚本中。shI不知道为什么我会得到一个downvote。我认识到这个问题可能会产生误导(是关于crontab还是关于Cx_oracle或virtualenv?),但对我来说,您需要在crontab调用的脚本中指定路径一点也不明显。没问题,它不是针对您的。。我有一种感觉,有时人们会毫不谨慎地使用否决票