मैं एक पायथन 2.7.2 और ओरेकल 11 जी स्थापना के लिए cx_Oracle बनाने की कोशिश कर रहा हूं लेकिन निर्मित cx_Oracle.so libclntsh.so.11.1 नहीं ढूंढ सकता है इसलिए cx_Oracle आयात करना पाइथन विफल रहता है।समस्या निर्माण cx_Oracle - libclntsh.so.11.1 => नहीं मिला
/mypath/cx_Oracle-5.1.1/build/lib.linux-x86_64-2.7-11g]$ ldd cx_Oracle.so
libclntsh.so.11.1 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae9be290000)
libc.so.6 => /lib64/libc.so.6 (0x00002ae9be4ab000)
/lib64/ld-linux-x86-64.so.2 (0x000000389b600000)
मैं अपने Oracle ग्राहक स्थापना निर्देशिका में libclntsh.so.11.1 है:
/apps/oracle/client/11.2.0.1/home1/lib]$ ls -l libclntsh.so*
libclntsh.so -> /apps/oracle/client/11.2.0.1/home1/lib/libclntsh.so.11.1
libclntsh.so.11.1
और cx_Oracle setup.py इस lib dir उठा:
/mypath/cx_Oracle-5.1.1]$ python2.7 setup.py build
/apps/oracle/client/11.2.0.1/home1/
running build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/apps/oracle/client/11.2.0.1/home1/rdbms/demo -I/apps/oracle/client/11.2.0.1/home1/rdbms/public -I/apps/bweb/python-2.7.2/include/python2.7 -c cx_Oracle.c -o build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -DBUILD_VERSION=5.1.1
In file included from /apps/oracle/client/11.2.0.1/home1/rdbms/public/oci.h:3024,
from cx_Oracle.c:10:
/apps/oracle/client/11.2.0.1/home1/rdbms/public/ociap.h:10788: warning: function declaration isn't a prototype
/apps/oracle/client/11.2.0.1/home1/rdbms/public/ociap.h:10794: warning: function declaration isn't a prototype
gcc -pthread -shared build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -L/apps/oracle/client/11.2.0.1/home1/lib -lclntsh -o build/lib.linux-x86_64-2.7-11g/cx_Oracle.so
क्या इस सेटअप के साथ कुछ गलत है?
धन्यवाद
अद्यतन
मेरे LD_LIBRARY_PATHlibclntsh.so.11.1
$ echo $LD_LIBRARY_PATH
/apps/oracle/client/11.2.0.1/lib
यह कोई फर्क नहीं लगता है के साथ ऊपर lib निर्देशिका में शामिल है। मैं cx_Oracle.so फ़ाइल का पुनर्निर्माण करता हूं और यह libclntsh.so.11.1 => not found
दिखाता है जब मैं $ ldd cx_Oracle.so
चलाता हूं।
अजगर बनाया मॉड्यूल लोड करने में नाकाम रहने:
Python 2.7.2 (default, Jan 19 2012, 14:38:32)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory
हल
मुद्दा LD_LIBRARY_PATH वातावरण चर से संबंधित था। सेटअप पर प्रतिबंधों के कारण मैं (कॉर्प एनवी) के साथ काम कर रहा हूं, मुझे cx_Oracle को किसी अन्य उपयोगकर्ता (सिस्टम खाता) के रूप में बनाना था। अर्थात मैं इस चल रहा था:
$ sudo -u username python27 setup.py build
तो भले ही LD_LIBRARY_PATH मेरे लिए सही ढंग से स्थापित किया गया था, मेरे संस्करण का उपयोग नहीं किया गया था जब आदेश एक अन्य उपयोगकर्ता के रूप मार डाला गया था। मैं स्रोत कोड को उस स्थान पर ले जाकर सफलतापूर्वक निर्माण करने में सक्षम था जहां मेरे पास अनुमति थी और मेरे उपयोगकर्ता के रूप में निर्माण चला रहा था।
आप किस ओएस का उपयोग कर रहे हैं? कुछ यूनिक्स वितरण 'LD_LIBRARY_PATH' की बजाय' LD_LIB_PATH' का उपयोग करते हैं? आप फ़ाइल पर अनुमतियों को भी जांचना चाहेंगे और यह सुनिश्चित कर सकते हैं कि यह आपकी स्क्रिप्ट द्वारा पठनीय है। – Meitham
RHEL 6. मुझे लगता है कि LD_LIBRARY_PATH सही है, लेकिन ऐसा लगता है कि इसे किसी भी कारण से cx_Oracle का निर्माण होने पर विचार नहीं किया जा रहा है। – Alex
धन्यवाद। मैंने कोशिश की है और यह हल नहीं होता है। मैंने एलडी_LIBRARY_PATH सेट किया है और फिर cx_Oracle.so बनाया है। अभी भी libclntsh.so.11.1 => नहीं मिला दिखाता है। पुष्टि की है कि यह पायथन दुभाषिया में सेट है, और उपर्युक्त मुद्दे के कारण cx_Oracle लोड करने में असमर्थ हूं। समस्या cx_Oracle के निर्माण के बिंदु पर है, सही? 'os.environ [ 'LD_LIBRARY_PATH']' ' '/ apps/ओरेकल/ग्राहक/11.2.0.1/lib' ' >>> आयात cx_Oracle Traceback (सबसे हाल कॉल पिछले): फ़ाइल "", लाइन 1 , ' ' आयात त्रुटि: libclntsh.so.11.1: साझा ऑब्जेक्ट फ़ाइल नहीं खोल सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं ' –
Alex