#linux #oracle #python-2.5 #cx-oracle
#linux #Oracle #python-2.5 #cx-oracle
Вопрос:
Мне нужно установить 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 . Распаковал tar, перейдите в папку unpacked и запустите 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 я указал путь oracle:
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?
- Запустите pip для установки 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"]
Также клиент instant иногда помещает включаемые файлы, такие как oci.h, в /usr/include/oracle//client, если в каталоге ORACLE_HOME нет каталога ‘include’, создайте символическую ссылку на него.
sudo ln -s /usr/include/oracle/11.2/client $ORACLE_HOME/include
Похоже, вам не хватает клиентского SDK
Комментарии:
1. Я попытался создать символическую ссылку, это не помогает, но я пытаюсь просто добавить пустую папку include в /usr / oracle / 10.2.0.4 / client / network. Эта ошибка исправлена, но я получил новую, подробности см. в обновленном вопросе
2. @khris Попробуйте загрузить sdk и извлечь на своем клиенте, это должно создать папку sdk / include. Я добавил ссылку на ответ.
3. Не могли бы вы, пожалуйста, дать прямую ссылку, потому что на странице клиентского SDK я вижу много вещей, таких как Content Management SDK, и не знаю, что именно мне нужно загрузить. Спасибо
4. Я не могу напрямую ссылаться на файл, перейдите к oracle.com/technetwork/topics/linuxsoft-082809.html и выполните поиск «Пакет Instant Client — SDK: дополнительные заголовочные файлы и пример файла makefile для разработки приложений Oracle с Instant Client» для вашей версии Oracle.
5.Спасибо! Следующие команды помогли мне:
sudo mkdir $ORACLE_HOME/sdk/
sudo ln -s /usr/include/oracle/12.1/client $ORACLE_HOME/sdk/include
Ответ №2:
Убедитесь, что вы установили instant client 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:
Убедитесь, что в вашем path присутствует клиентский sdk.
Также мне пришлось добавить это в мой .bash_rc
export DYLD_LIBRARY_PATH=$ORACLE_HOME
В дополнение к этому, Python 2.7 не поставляется с Python.h, который доступен по умолчанию в Python 3.4. Поэтому я бы также предложил установить пакет python-devel
yum install python-devel
Это должно решить проблему.