不明白为什么我不能使用dxo使用cx_Oracle

时间:2015-05-19 18:48:38

标签: python django oracle11g cx-oracle

问题是我正在尝试构建一个新的python应用程序,但由于一些奇怪的原因,我一直有cx_Oracle的问题。任何帮助将不胜感激!!!

当我这样做时,我能够很好地导入cx_Oracle。

 programmer@ubuntu:~/Python_app$ python
 Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
 [GCC 4.8.2] on linux2
 Type "help", "copyright", "credits" or "license" for more information. 
 >>> import cx_Oracle
 >>> 

 >>> cx_Oracle 
 <module 'cx_Oracle' from '/usr/local/lib/python2.7/dist-packages/cx_Oracle.so'>

但是当我做这样的事情时

 programmer@ubuntu:~/Python_app$ sudo python manage.py startapp help_desk

我收到此错误

Error loading cx_Oracle module: libclntsh.so.11.1: cannot open shared object file: No such file or directory

我检查并重新检查了我的路径,我无法弄清楚出了什么问题。这是我的路径

programmer@ubuntu:~/Python_app$ echo $ORACLE_HOME
/opt/oracle/instantclient_11_2

programmer@ubuntu:~/Python_app$ echo $LD_LIBRARY_PATH 
/opt/oracle/instantclient_11_2

以下是我的/ opt / oracle / instantclient_11_2

的纲要
programmer@ubuntu:/opt/oracle/instantclient_11_2$ tree

 ├── adrci
 ├── BASIC_README
 ├── genezi
 ├── glogin.sql
 ├── libclntsh.so -> libclntsh.so.11.1
 ├── libclntsh.so.11.1
 ├── libnnz11.so
 ├── libocci.so.11.1
 ├── libociei.so
 ├── libocijdbc11.so 
 ├── libsqlplusic.so
 ├── libsqlplus.so
 ├── ojdbc5.jar
 ├── ojdbc6.jar 
 ├── sdk
 │   ├── demo
     │   │   ├── cdemo81.c
     │   │   ├── demo.mk
     │   │   ├── occidemod.sql
     │   │   ├── occidemo.sql
     │   │   ├── occidml.cpp
     │   │   ├── occiobj.cpp
     │   │   └── occiobj.typ
 │   ├── include
     │   │   ├── ldap.h
     │   │   ├── nzerror.h
     │   │   ├── nzt.h
     │   │   ├── occiAQ.h
     │   │   ├── occiCommon.h
     │   │   ├── occiControl.h
     │   │   ├── occiData.h
     │   │   ├── occi.h
     │   │   ├── occiObjects.h
     │   │   ├── oci1.h
     │   │   ├── oci8dp.h
     │   │   ├── ociap.h
     │   │   ├── ociapr.h
     │   │   ├── ocidef.h
     │   │   ├── ocidem.h
     │   │   ├── ocidfn.h
     │   │   ├── ociextp.h
     │   │   ├── oci.h
     │   │   ├── ocikpr.h
     │   │   ├── ocixmldb.h
     │   │   ├── ocixstream.h
     │   │   ├── odci.h
     │   │   ├── oratypes.h
     │   │   ├── orid.h
     │   │   ├── ori.h
     │   │   ├── orl.h
     │   │   ├── oro.h
     │   │   ├── ort.h
     │   │   └── xa.h
     │   ├── ott
     │   ├── ottclasses.zip
     │   └── SDK_README
 ├── sqlplus
 ├── SQLPLUS_README
 ├── uidrvci
 └── xstreams.jar

当我尝试没有sudo的命令时,我得到了这个

 programmer@ubuntu:~/Python_app$ python manage.py startapp help_desk
 CommandError: [Errno 13] Permission denied: '/home/programmer/Python_app/help_desk'

根据评论,我认为这与我的许可有关,这里是opt / oracle / instantclient_11_2的权限

  -rwxrwxr-x 1 root root     25420 Aug 24  2013 adrci
  -rw-rw-r-- 1 root root       439 Aug 24  2013 BASIC_README
  -rwxrwxr-x 1 root root     47860 Aug 24  2013 genezi
  -r-xr-xr-x 1 root root       368 Aug 24  2013 glogin.sql
  lrwxrwxrwx 1 root root        17 May 19 14:53 libclntsh.so -> libclntsh.so.11.1
  -rwxrwxr-x 1 root root  53865194 Aug 24  2013 libclntsh.so.11.1
  -r-xr-xr-x 1 root root   7996693 Aug 24  2013 libnnz11.so
  -rwxrwxr-x 1 root root   1973074 Aug 24  2013 libocci.so.11.1
  -rwxrwxr-x 1 root root 118738042 Aug 24  2013 libociei.so
  -r-xr-xr-x 1 root root    164942 Aug 24  2013 libocijdbc11.so
  -r-xr-xr-x 1 root root   1502287 Aug 24  2013 libsqlplusic.so
  -r-xr-xr-x 1 root root   1469542 Aug 24  2013 libsqlplus.so
  -r--r--r-- 1 root root   2091135 Aug 24  2013 ojdbc5.jar
  -r--r--r-- 1 root root   2739616 Aug 24  2013 ojdbc6.jar
  drwxrwxr-x 4 root root      4096 Aug 24  2013 sdk
  -r-xr-xr-x 1 root root      9320 Aug 24  2013 sqlplus
  -rw-rw-r-- 1 root root       443 Aug 24  2013 SQLPLUS_README
  -rwxrwxr-x 1 root root    192365 Aug 24  2013 uidrvci
  -rw-rw-r-- 1 root root     66779 Aug 24  2013 xstreams.jar

还有一件事可以使用python shell导入cx_Oracle模块,但在尝试创建新应用时无法做到这一点。 所以我不确定最新情况。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。是的,它与我的权限有关。 sudo无法看到ORACLE_HOME,所以我所做的就是将Defaults env_keep += "ORACLE_HOME"添加到sudo visudo并开始工作!谢谢你的帮助@mmmmmpie。