Я хочу запланировать задачу на Linux icrontab, и задача записана в Python и должна импортировать cx_Oracle
модуль, таким образом, я экспортирую ORACLE_HOME
и LD_LIBRARY_PATH
в .bash_profile, но это повышает ошибку:
libclntsh.so.11.1: не может открыть файл общего объекта.
Так как нормально работать, задача дают команду в оболочке как:
python a.py # ok
Я изменяю задачу в icrontab в сценарий оболочки, которые вызывают мой сценарий Python, но исключение повторилось?
# the shell script scheduled in icrontab
#! bash
python a.py
Вы могли помочь, как сделать с ним?
Возможно, вы хотите указать PATH
- а также ORACLE_HOME
и LD_LIBRARY_PATH
- чтобы cron (1)
знал, где найти двоичные файлы.
Прочтите "5 среду Crontab" здесь .
Cron не загружает профиль пользователя при выполнении задачи, и вы должны явно включить профиль в сценарий оболочки.
I столкнулся с той же проблемой на прошлых выходных, когда мне нужно было использовать cx_Oracle. Потратив много времени на попытки изменить переменную LD_LIBRARY_PATH, чтобы включить директорию $ ORACLE_HOME / lib, где находится libclntsh.so, я решил проблему, создав символические ссылки из всех библиотек Oracle xlibx.so в / lib / xlibx. .так. Это, конечно, не самое «чистое» решение, но у него есть хорошие шансы работать, не вызывая особых проблем:
cd $ORACLE_HOME/lib
for f in `ls ./*.so*`; do;
sudo ln -s $ORACLE_HOME/lib/$f /lib/$f
done
После того, как я это сделал, cx_Oracle заработал как шарм.