cx_Oracle使用mod_wsgi环境运行
我在CentOS 6.2上安装了cx_Oracle。当我从外壳导入库,它工作正常,但是当我通过WSGI启动它,我得到的错误:cx_Oracle使用mod_wsgi环境运行
ImportError: libclntsh.so.10.1: cannot open shared object file: No such file or directory
这是一个环境变量的问题:cx_Oracle没有找到路径到lib。
我试图提供的解决方案here
我在/ usr/lib目录
增加了一个链接到libclntsh.so.10.1(其中Ln)我已编辑apache的配置和添加:
ORACLE_HOME=/usr/lib/oracle/11.2/client64/lib
LD_LIBRARY_PATH=$ORACLE_HOME/
PATH=$ORACLE_HOME/bin:$PATH
我编辑/etc/ld.so.conf中并加入:
/usr/lib/oracle/11.2/client64/lib
ldconfig命令后进行
我试图用Python和:
os.env['ORACLE_HOME']='/usr/lib/oracle/11.2/client64/lib'
我编辑的.bashrc有:
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/
export PATH=$ORACLE_HOME/bin:$PATH
我还编辑的apachectl与
ORACLE_HOME=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/
export LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
export PATH
我运行出于想法。有什么建议么 ?
而不是在cx_Oracle rpm上使用yum install,我下载了库的源代码并运行setup.py构建。
我会指向我试图找到在即时客户端SDK库函数的错误:
possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public","sdk/include"]
浏览ORACLE_HOME文件夹,我发现其中安装在lib的SDK文件文件夹(我使用yum install在oracle的rpm上安装了skd),并且不在possibleIncludeDirs中,或在安装程序中建议的include文件夹中。潘岳:
if not includeDirs:
path = os.path.join(oracleLibDir, "include")
if os.path.isdir(path):
includeDirs.append(path)
if not includeDirs:
path = re.sub("lib(64)?", "include", oracleHome)
if os.path.isdir(path):
includeDirs.append(path)
我下载了即时客户端SDK(该ZIP文件这段时间),并已解压到lib文件夹。
有那么lib文件夹中(/usr/lib/oracle/11.2/client64/lib)
接着我就推出了setup.py构建和setup.py的安装和它的工作一个SDK文件夹。
当你编译for Oracle的Python模块,设置:
LD_RUN_PATH=/usr/lib/oracle/11.2/client64/lib
用户环境变量和导出。这将导致该目录被嵌入到Python扩展模块.so文件中,并且会在运行时知道在哪里找到它,而无需设置LD_LIBRARY_PATH环境变量。
对于标准的Apache发行版(Linux发行版经常有点不同),设置额外环境变量的文件被称为'envvars',并且与'httpd'位于同一目录中。对于Linux发行版经常需要使用特殊的init.d启动脚本。
因此,查找LD_RUN_PATH的全部内容。