Подтвердить что ты не робот

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
4b9b3361

Ответ 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

Ответ 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

Это должно решить проблему.