Как импортировать cx_Oracle на CentOS 6? - PullRequest
1 голос
/ 28 декабря 2011

У меня серьезные проблемы с тем, чтобы Django работал с моей установкой Apache / mod_wsgi, обращающейся к Oracle. У меня работает эта установка на хосте CentOS 6, и я получаю эту ошибку в моих журналах Apache:

Error loading cx_Oracle module: libclntsh.so.10.1: cannot open shared object file: No such file or directory

Если я пытаюсь импортировать cx_Oracle из командной строки Python, он отлично работает как для пользователей root, так и для пользователей apache. Я правильно установил ORACLE_HOME и LD_LIBRARY_PATH ($ORACLE_HOME/lib): в ~/.bashrc, /etc/ld.so.conf.d/oracle.conf, ~/.bash_profile везде, где я могу установить переменную env.

Я также пытался создать жесткую или символическую ссылку на $ORACLE_HOME/lib/libclntsh.so.10.1 в /usr/lib, но я получил ошибку разрешения, независимо от того, сколько chmod 777 я выдаю с /usr до /usr/lib и файл.

Я добавил ORACLE_HOME и LD_LIBRARY_PATH к /etc/sysconfig/httpd без изменений.

Видимо, эта ошибка возникает только тогда, когда пользователь Apache запускает команду import cx_Oracle, хотя, войдя в систему с этим пользователем, я могу запустить команду из интерпретатора Python.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Когда вы собираете cx_Oracle из исходного кода, задайте для переменной среды LD_RUN_PATH путь к каталогу lib, содержащему файлы Oracle .so, и он будет встраивать местоположение в cx_Oracle .so и знать, где получить libclntsh.so во время выполнения.без необходимости установки LD_LIBRARY_PATH.

1 голос
/ 08 января 2012

Есть лучшее решение без переустановки .. "добавили /app/oracle/oracle/product/10.2.0/db_1/lib в /etc/ld.so.conf и запустили ldconfig." от http://catherinedevlin.blogspot.com/2005/10/cxoracle-and-ubuntu.html

...