Cx_Oracle: distutils.errors.DistutilsSetupError: не удается найти файлы Oracle include
Мне нужно установить cx_Oracle для Python 2.5 на Linux (Linux 2.6.18-371.1.2.el5 i686). Я установил клиент Oracle 10.2.0.4.
Я пробовал следующее:
1. Загрузите cx_Oracle tar.gz
из http://sourceforge.net/projects/cx-oracle/files/
.
Я не знаю, какая из перечисленных версий подходит для python 2.5 и Oracle client 10.2.0.4, поэтому попробуйте cx_Oracle-5.1.tar.gz. Распакованная смола,
перейдите в распакованную папку и запустите установку python setup.py. Я получил ошибку:
Traceback (most recent call last):
File "setup.py", line 187, in <module>
raise DistutilsSetupError("cannot locate Oracle include files")
distutils.errors.DistutilsSetupError: cannot locate Oracle include files
В .bash_profile Я установил путь оракула:
export ORACLE_HOME=/usr/oracle/10.2.0.4/client
export PATH=$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
Как исправить такую ошибку, может быть, мне нужна другая версия cx_Oracle tar?
- Запустить программу pc cx_Oracle. Получена ошибка:
Загрузка/распаковка cx-Oracle
Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement cx-Oracle
No distributions at all found for cx-Oracle
Может кто-нибудь посоветует мне правильное решение?
Обновление
После предложения в ответ я получил следующую ошибку:
...
cx_Oracle.c:496: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast
cx_Oracle.c:497: error: âOCI_UCBTYPE_EXITâ undeclared (first use in this function)
cx_Oracle.c:497: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast
cx_Oracle.c:498: error: âOCI_UCBTYPE_REPLACEâ undeclared (first use in this function)
cx_Oracle.c:498: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast
error: command 'gcc' failed with exit status 1
Ответы
Ответ 1
Когда вы запустите setup.py, он будет проверять любую из этих папок на вашем ORACLE_HOME.
possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public",
"sdk/include"]
Также мгновенный клиент иногда помещает включенные файлы, такие как oci.h, в /usr/include/oracle//client, если нет каталога "include" в ORACLE_HOME, создает символическую ссылку на него.
sudo ln -s /usr/include/oracle/11.2/client $ORACLE_HOME/include
Похоже, вам не хватает Client SDK
Ответ 2
Убедитесь, что вы установили клиентский sdk для вашей ОС.
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Ответ 3
-
Установите oracle_client_basic
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
-
Использование pip install
python -m pip install cx_Oracle
-
Добавление ldconfig
- Найдите местоположение своего клиента, например:
/u01/app/oracle/product/11.2.0/client_1/lib
-
vi /etc/ld.so.conf.d/oracle.conf
Добавьте это местоположение в него:
/u01/app/oracle/product/11.2.0/client_1/lib
-
ldconfig
-
import cx_oracle
Ответ 4
Убедитесь, что у вас есть клиентский sdk, присутствующий в вашем пути.
Также мне пришлось добавить это в мой .bash_rc
export DYLD_LIBRARY_PATH=$ORACLE_HOME
В дополнение к этому, Python 2.7 не поставляется с Python.h, который доступен по умолчанию в Python 3.4. Поэтому я также предлагаю установить пакет python-devel
yum install python-devel
Это должно решить проблему.