Мне удалось успешно установить cx_Oracle для использования с Python 3.4 на моем ноутбуке с Windows 8, и теперь я пытаюсь получить ту же настройку (cx_Oracle с Python 3.4) на машине Linux. При запуске файла setup.py из cx_Oracle-5.1.3.tar.gz я получаю эту ошибку:
sudo python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 135, in <module>
raise DistutilsSetupError("cannot locate an Oracle software " \
distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation
После некоторых других ответов я посмотрел (easy_install cx_Oracle (python package) в Windows, https://gist.github.com/jarshwah/3863378) Я установил эти 3 мгновенных клиентских rpms:
rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm
rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm
rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm
Затем я установил ORACLE_HOME в папку, в которую они были установлены, что должно помочь python определить местоположение файлов Oracle, чтобы он мог правильно выполнить установку.
Я по-прежнему получаю ту же ошибку «не могу найти установку программного обеспечения Oracle» каждый раз, когда пытаюсь запустить файл setup.py.
Есть идеи, что мне нужно сделать, чтобы успешно установить cx_oracle?
Обновите для получения дополнительной информации:
echo $ ORACLE_HOME возвращает /instantclient
, где установлены файлы rpm.sudo python3 setup.py install
1
Это содержимое моего каталога / Instantclientsudo python3 setup.py install
1:
adrci libnnz12.so libsqlplusic.so tnsnames.ora
BASIC_README libocci.so libsqlplus.so tnsnames.ora_andy
genezi libocci.so.12.1 ojdbc6.jar uidrvci
glogin.sql libociei.so ojdbc7.jar xstreams.jar
libclntshcore.so.12.1 libocijdbc12.so sdk
libclntsh.so libons.so sqlplus
libclntsh.so.12.1 liboramysql12.so SQLPLUS_README
Это немного отличается от каталога, который у меня есть для установки Windows 8 - в нем есть файлы .dll
и .sym
, например orasql12.dll
. Должны ли в Linux-версии мгновенной установки клиента быть другие файлы?
Обновление с частичным решением:
Я нашел решение, которое правильно установило cx_Oracle, но только во время этого экземпляра оболочки:
Я установил эти две переменные среды:
export ORACLE_HOME=/instantclientsudo python3 setup.py install
1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
Затем я создал символическую ссылку:
ln -s libclntsh.so.12.1 libclntsh.so
После этого зайти в папку cx_oracle
и сделать это сработало:
python3 setup.py build
python3 setup.py install
Почему-то sudo python3 setup.py install
для этого не работал.
Обновление со ссылкой на связанный вопрос:
Моя следующая проблема заключается в том, чтобы переменные среды сохранялись вне экземпляра оболочки, поэтому мне не нужно каждый раз определять переменные среды. Переменные среды, которые я ввел в profile.d, отображаются, когда я повторяю их, но python не может правильно импортировать cx_oracle, и мне по какой-то причине приходится снова экспортировать переменные среды. Я не знаю надлежащей процедуры для публикации другого вопроса, связанного с одним, поэтому я открыл здесь новый вопрос:
Переменные среды profile.d в Linux не t работать с cx_oracle в Python
Пожалуйста, помогите мне с этим, я совершенно застрял в том, что попытаться заставить это работать. Переменные среды отображаются, когда я повторяю их, но они кажутся работоспособными только в том случае, если я снова экспортирую их перед запуском кода python.
ORACLE_HOME
?export ORACLE_HOME=/your/oracle/dir
- person mhawke   schedule 19.06.2015echo $ORACLE_HOME
возвращает мой каталог oracle/instantclient_12_1
Это правильно? - person Acuity   schedule 19.06.2015rpm -ivh
, файлы должны быть установлены в/usr/lib/oracle
, а не/instantclient_12_1
. Вы уверены, что установили сrpm
, или вы установили, распаковав zip-файлы, доступные на той же странице загрузки? - person mhawke   schedule 19.06.2015/usr/lib/oracle
. Могу ли я установитьORACLE_HOME
на/usr/lib/oracle
? Я попробую и посмотрю, сработает ли это. Я не очень уверен, откуда взялась папка/instantclient_12_1
. - person Acuity   schedule 19.06.2015/usr/lib/oracle
какORACLE_HOME
, и я также добавилORACLE_HOME
вPATH
, но все равно получаю такое же сообщение об ошибке при запуске setup.py. Есть другие идеи?echo $ORACLE_HOME
дает мне/usr/lib/oracle
иecho $PATH
дает мне/usr/lib/oracle:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/maven/apache-maven-3.2.5/bin:/root/bin
, я сначала помещаю домашнюю папку oracle. - person Acuity   schedule 19.06.2015