Python 不明白为什么我不能将cx_Oracle与Django一起使用
问题是,我正在尝试构建一个新的python应用程序,但出于某种奇怪的原因,我一直对cx_Oracle有问题。任何帮助都将不胜感激 当我这样做的时候,我可以很好地导入cx_OraclePython 不明白为什么我不能将cx_Oracle与Django一起使用,python,django,oracle11g,cx-oracle,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 "licens
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'>
我得到这个错误
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
下面是my/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
-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
当我在没有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的权限
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
-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
还有一件事,它的wierd可以使用pythonshell导入cx_Oracle模块,但在尝试创建新应用程序时无法做到。。
所以我不确定发生了什么 好吧,我知道了。是的,这和我的权限有关
sudo
无法查看ORACLE\u HOME
,所以我所做的就是将Defaults env\u keep+=“ORACLE\u HOME”
添加到sudo visudo
中,然后工作了!谢谢你的帮助@mmmmm pie。如果你不使用sudo
运行它会发生什么?我在没有sudo的情况下尝试了它,这就是我得到的programmer@ubuntu:~/Python\u应用程序$Python manage.py startapp帮助\u桌面命令错误:[错误号13]权限被拒绝:'/home/programmer/Python_app/help_desk'@mmmmm pie我想你已经把安装中的权限搞砸了。部分(如果不是全部)oracle文件归root所有,但您的用户具有适当的变量和路径设置。这很有意义,您建议我如何解决此问题?如果我想问程序员/opt/oracle/instantclient/@mmmmm,你可以试试。重新安装它需要花费多少精力?只是一个提示。。。不要以root用户身份运行应用程序/数据库。我是一名rails开发人员,慢慢开始使用python,因此rails oracle的gem是ruby-OCI8,这有时是一场噩梦,我很确定这就是为什么我的db是root的原因,只是因为我对OCI8很恼火,我想安装它,所以作为一个用户而不是root重新安装了所有的东西,一切都很好。但无论如何,谢谢你的建议