powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
4 сообщений из 4, страница 1 из 1
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
    #40134885
ClonCD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При попытке подключения к Oracle c помощью cx_Oracle получаю ошибку:
Код: plaintext
 cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory"
Вот такие исходные данные у меня:
Red Hat Enterprise Linux release 8.5 (Ootpa)
Python 3.8.8
cx_Oracle-8.3.0 под python3.8
На Убунту всё хорошо. Прописываем LD_LIBRARY_PATH к Оракловому InstantClient -- и там всё ок. А под RHEL8 -- никак.
Почитал внимательно документацию, убедился, что пользователю, под которым запускаю python-скрипт доступны нужные папки, что пути прописаны... Пробовал и под venv запускать, и напрямик. Никак.
Засунул libclntsh.so.12.1 напрямик в venv/lib64
Есть ощущение, что не хватает каких-то прав, понять бы, на что именно. Мой пользователь был изрядно урезан в правах на момент начала работы.
Вот полный вывод ошибки при export DPI_DEBUG_LEVEL=64 :

(env38) [my_login@my_host python]$ python run.py > dpi_err.log
ODPI [49649] 2022-02-17 14:09:08.888: ODPI-C 4.3.0
ODPI [49649] 2022-02-17 14:09:08.888: debugging messages initialized at level 64
ODPI [49649] 2022-02-17 14:09:09.008: Context Parameters:
ODPI [49649] 2022-02-17 14:09:09.008: Environment Variables:
ODPI [49649] 2022-02-17 14:09:09.008: LD_LIBRARY_PATH => "/usr/lib/oracle/12.2/client64"
ODPI [49649] 2022-02-17 14:09:09.008: check module directory
ODPI [49649] 2022-02-17 14:09:09.008: module name is /home/my_login/python/env38/lib64/python3.8/site-packages/cx_Oracle.cpython-38-x86_64-linux-gnu.so
ODPI [49649] 2022-02-17 14:09:09.008: load in dir /home/my_login/python/env38/lib64/python3.8/site-packages
ODPI [49649] 2022-02-17 14:09:09.008: load with name /home/my_login/python/env38/lib64/python3.8/site-packages/libclntsh.so
ODPI [49649] 2022-02-17 14:09:09.008: load by OS failure: /home/my_login/python/env38/lib64/python3.8/site-packages/libclntsh.so: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.008: load with OS search heuristics
ODPI [49649] 2022-02-17 14:09:09.008: load with name libclntsh.so
ODPI [49649] 2022-02-17 14:09:09.008: load by OS failure: libclntsh.so: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.008: load with name libclntsh.so.19.1
ODPI [49649] 2022-02-17 14:09:09.008: load by OS failure: libclntsh.so.19.1: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.008: load with name libclntsh.so.18.1
ODPI [49649] 2022-02-17 14:09:09.008: load by OS failure: libclntsh.so.18.1: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.008: load with name libclntsh.so.12.1
ODPI [49649] 2022-02-17 14:09:09.008: load by OS failure: libclntsh.so.12.1: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.008: load with name libclntsh.so.11.1
ODPI [49649] 2022-02-17 14:09:09.009: load by OS failure: libclntsh.so.11.1: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.009: load with name libclntsh.so.20.1
ODPI [49649] 2022-02-17 14:09:09.009: load by OS failure: libclntsh.so.20.1: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.009: load with name libclntsh.so.21.1
ODPI [49649] 2022-02-17 14:09:09.009: load by OS failure: libclntsh.so.21.1: cannot open shared object file: No such file or directory
ODPI [49649] 2022-02-17 14:09:09.009: check ORACLE_HOME
Traceback (most recent call last):
File "run.py", line 93, in <module>
f1.main()
File "/home/my_login/python/File1.py", line 303, in main
create_some_tables()
File "/home/my_login/python/File1.py", line 254, in create_some_tables
con = f2.getConnection(user=main_cfg['user'],
File "/home/my_login/python/File2.py", line 33, in getConnection
return cx_Oracle.connect(user=user, password=password, dsn=getDsn(host, port, service))
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
...
Рейтинг: 0 / 0
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
    #40134948
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClonCD
При попытке подключения к Oracle c помощью cx_Oracle получаю ошибку:
Код: plaintext
 cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory"
А где оно в реальности находится?
В /usr/lib/oracle/12.2/client64 или в /home/my_login/python/env38/lib64/python3.8/site-packages/?
...
Рейтинг: 0 / 0
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
    #40135074
ClonCD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, сначала было в /usr/lib/oracle/12.2/client64/lib
Потом я посмотрел на вывод при DPI_DEBUG_LEVEL=64 и увидел, что изначально он эти библиотеки ищет среди своих, а потом уже лезет по пути LD_LIBRARY_PATH.
Поэтому скопировал в /home/my_login/python/env38/lib64/python3.8/site-packages/

ldd cx_Oracle-8.3.0*.so не пишет явно, что ему эта библиотека нужна.

UPD: поднял версию Python до 3.9.6, ровно та же ошибка.
...
Рейтинг: 0 / 0
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
    #40135099
ClonCD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решилось.
1. Поставил Oracle Instant Client 19, прописал нормально пути к нему.
2. cx_Oracle ищет библиотки по пути $ORACLE_HOME/lib -- а в Oracle Instant Client 19 они все кучей в корень свалены, пришлось создавать папку lib и копировать туда все *.so
3. Раздал права 777 на папку venv (на всякий случай)
4. После этого ругнулся на libnsl -- ну это решилось просто sudo yum install libnsl без дополнительных линков.

В общем DPI_DEBUG_LEVEL=64 многое объясняет, всем советую в случае вопросов.

Спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (16): Анонимы (13), Bing Bot, Yandex Bot, Google Bot 5 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]