python -> cx_Oracle -> Oracle client
Может кто занимался установкой и настройкой на Ubuntu cx_Oracle из исходников.бррр
установка? настройка?
качаешь сурцы, компиляешь, получается один файл cx_Oracle.so
это разделяемая библиотека
кидаешь ее в стандартный путь типа /usr/local/bin
или добавляешь путь к ней в LD_LIBRARY_PATH
error: /usr/bin/ld: cannot find -lclntshну дык найди у себя на компе clntsh.so
это небось в папке оракла внутри гденить валяется
find /opt/oracle -name "clntsh*"
небось... не работает
компиляешьс какими параметрами есть опыт? не люблю я это дело подбирать параметры
небось... не работаетчто означает эта фраза?
ты библиотеку у себя на компе нашел?
у меня она тута:
$ ls /opt/oracle/product/10.2.0/client_1/lib32/libclntsh.so.10.1
/opt/oracle/product/10.2.0/client_1/lib32/libclntsh.so.10.1*
ln -s libclntsh.so.10.1 libclntsh.so
Пути прописаны в profile и выводятся. пути прописаны и в /etc/ld.so.conf(еще переменные прописаны в какой-то файлик - sudo не могло найти ORACLE_HOME)
в инете решение ошибки что я написал - это сделать линк ln -s libclntsh.so.10.1 libclntsh.so. Но он у меня сделан.
sudo python setup.py build
running buildpython setup.py build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-x86_64-2. 5-10g/cx_Oracle.o -L/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib -L/u sr/lib/oracle/xe/app/oracle/product/10.2.0/client -lclntsh -o build/lib.linux-x8 6_64-2.5-10g/cx_Oracle.so
/usr/bin/ld: skipping incompatible /usr/lib/oracle/xe/app/oracle/product/10.2.0/ client/lib/libclntsh.so when searching for -lclntsh
/usr/bin/ld: cannot find -lclntsh
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
running buildя вот правда не знаю может дело в том что я установил на AMD версию оракла i386, но другого XE нет.
running build_ext
building 'cx_Oracle' extension
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-x86_64-2. 5-10g/cx_Oracle.o -L/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib -L/u sr/lib/oracle/xe/app/oracle/product/10.2.0/client -lclntsh -o build/lib.linux-x8 6_64-2.5-10g/cx_Oracle.so
/usr/bin/ld: cannot open output file build/lib.linux-x86_64-2.5-10g/cx_Oracle.so : Permission denied
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
надеюсь что нет
2. у тебя убунту 64 или 32 битная?
команда uname -a
питон у тебя 64 или 32 битный?
комагда file `which python`
libclntsh.so у тебя 64 или 32 битная?
команда file libclntsh.so.10.lala
/usr/bin/ld: cannot open output file build/lib.linux-x86_64-2.5-10g/cx_Oracle.so : Permission deniedблин
не надо НИКОГДА из-под ничего компилять
это же первое правило *никс систем
потри все что насоздал сдуру
распакуй сурцы по новой
и компиляй не из-под рута
/usr/bin/python2.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV for GNU/Linux 2.6.8, dynamically linked (uses shared libs stripped
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so.10.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV dynamically linked, stripped
вроде все верно. XE - 32 другого не нашел и остальное 64 получается.
У меня еще дома дебиан. На нем установилось все отлично. Но правда дома я установил XE с помощье apt-get, а на ubuntu с --force-install(чо-то типа того. Но сама база работает, а вот cx_Oracle не устанавливается)
running build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-x86_64-2.5-10g/cx_Oracle.o -L/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib -L/usr/lib/oracle/xe/app/oracle/product/10.2.0/client -lclntsh -o build/lib.linux-x86_64-2.5-10g/cx_Oracle.so
/usr/bin/ld: skipping incompatible /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/libclntsh.so when searching for -lclntsh
/usr/bin/ld: cannot find -lclntsh
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
вроде все верно. XE - 32 другого не нашел и остальное 64 получается.эээ
У меня еще дома дебиан. На нем установилось все отлично. Но правда дома я установил XE с помощье apt-get, а на ubuntu с --force-install(чо-то типа того. Но сама база работает, а вот cx_Oracle не устанавливается)
у тебя не получится подружить 64-бит питон и 32-бит оракл
дома или питон не 64-бит, или оракл 64-бит
эта
выход для тебя такой:
XE - это сама база
cx_Oracle - это не база, это клиент
на сайте оракла бесплатно можешь скачать клиент 64-битный
этот клиент подсунуть питону
и будет счатье
естессно 64-битный клиент к 32-битной базе нормально коннектится
спасибо. попробую.
import cx_Oracle выдает
[*dir*]/cx_Oracle.so: undefined symbol: OCIDBShutdown
Встречал?
эээ, тут такое дело, установил нормально,нет
import cx_Oracle выдает
[*dir*]/cx_Oracle.so: undefined symbol: OCIDBShutdown
Встречал?
попробую угадать
ты установил как я предлагал с оракловским клиентом?
т.е. теперь у тебя две папки с ораклом: база и клиент?
ORACLE_HOME смотрит на клиента (а не на базу) когда стартуешь питон?
ORACLE_HOME = .../10.2.0/client - было
потом скачал instantcient и разархивировал в ту же .../10.2.0/ и все пути поменял
теперь у меня
ORACLE_HOME = .../10.2.0/instantcient10_1
LD_LIBRARY_PATH = .../10.2.0/instantcient10_1
NLS_LANG = AMERICAN_AMERICA.AL32UTF8 - тут я хз чо писать если честно, но вроде sqlplus работает,коннектится нормально
SQLPATH=$ORACLE_HOME/sqlplus
пути одинаковые т.к. там все в одну папку разархивировалось.
ошибка хз почему, поддержка cx_Oracle ничего сказать путного не смогла, но я удалил все cx_Oracle.so из системы - что равносильно uninstall и дальше sudo -E easy_install cx_Oracle сделал свое дело. кстати установка rpm давала ту же ошибку.
Оставить комментарий
Teteshnik
Вещи эти распространенные. Может кто занимался установкой и настройкой на Ubuntu cx_Oracle из исходников. Помогите плиз с установкой. Все что советовали в инете перепробовал. не устанавливается cx_Oracle. Если знаете где найти cx_Oracle.so - тоже здорово было бы. Я не нашел.Ubuntu, AMD, oracleXE10, python 2.5
error: /usr/bin/ld: cannot find -lclntsh