|
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
|
|||
---|---|---|---|
#18+
При попытке подключения к Oracle c помощью cx_Oracle получаю ошибку: Код: plaintext
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 16:33 |
|
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
|
|||
---|---|---|---|
#18+
ClonCD При попытке подключения к Oracle c помощью cx_Oracle получаю ошибку: Код: plaintext
В /usr/lib/oracle/12.2/client64 или в /home/my_login/python/env38/lib64/python3.8/site-packages/? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 19:32 |
|
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
|
|||
---|---|---|---|
#18+
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, ровно та же ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 10:51 |
|
(Python) cx_Oracle.DatabaseError: DPI-1047: Cannot locate library ...
|
|||
---|---|---|---|
#18+
Решилось. 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 многое объясняет, всем советую в случае вопросов. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:59 |
|
|
Start [/forum/topic.php?fid=23&tid=1459362&gotolast=1]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
18ms |
get topic data: |
15ms |
get forum data: |
0ms |
get page messages: |
12ms |
get tp. blocked users: |
0ms |
others: | 81ms |
total: | 143ms |
0 / 0 |