问题是我正在尝试构建一个新的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模块,但在尝试创建新应用时无法做到这一点。 所以我不确定最新情况。
答案 0 :(得分:0)
好的,我明白了。是的,它与我的权限有关。 sudo
无法看到ORACLE_HOME
,所以我所做的就是将Defaults env_keep += "ORACLE_HOME"
添加到sudo visudo
并开始工作!谢谢你的帮助@mmmmmpie。