python-cx_Oracle无法识别要在Linux上安装的Oracle软件的安装位置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-cx_Oracle无法识别要在Linux上安装的Oracle软件的安装位置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3177字,纯文字阅读大概需要5分钟。
内容图文
![python-cx_Oracle无法识别要在Linux上安装的Oracle软件的安装位置](/upload/InfoBanner/zyjiaocheng/885/c60f9c97e71c4358aa4a2be85fa3912f.jpg)
我已经能够在Windows 8笔记本电脑上成功安装cx_Oracle以与Python 3.4一起使用,现在我试图将相同的设置(带有Python 3.4的cx_Oracle)安装到Linux机器上.从cx_Oracle-5.1.3.tar.gz运行setup.py文件时,出现以下错误:
sudo python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 135, in <module>
raise DistutilsSetupError("cannot locate an Oracle software " distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation
在查看了其他一些答案之后(easy_install cx_Oracle (python package) on Windows,https://gist.github.com/jarshwah/3863378),我已经安装了这3个即时客户端rpm:
rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm
rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm
rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm
然后,我将ORACLE_HOME设置为它们安装到的文件夹,这应该可以帮助python识别oracle文件的位置,以便它可以正确地进行安装.
每次尝试运行setup.py文件时,我仍然会收到相同的“找不到Oracle软件安装”错误.
知道要成功安装cx_oracle需要做什么?
更新以获取更多信息:
echo $ORACLE_HOME返回/ instantclient_12_1,这是安装rpm文件的位置.
这是我的/ instantclient_12_1目录的内容:
adrci libnnz12.so libsqlplusic.so tnsnames.ora
BASIC_README libocci.so libsqlplus.so tnsnames.ora_andy
genezi libocci.so.12.1 ojdbc6.jar uidrvci
glogin.sql libociei.so ojdbc7.jar xstreams.jar
libclntshcore.so.12.1 libocijdbc12.so sdk
libclntsh.so libons.so sqlplus
libclntsh.so.12.1 liboramysql12.so SQLPLUS_README
这与Windows 8安装目录有一点不同-Windows 8安装目录具有.dll和.sym文件,例如orasql12.dll.即时客户端安装的Linux版本是否应具有不同的文件?
更新部分解决方案:
我找到了一个正确安装cx_Oracle的解决方案,但仅在该shell实例期间安装了:
我设置了以下两个环境变量:
export ORACLE_HOME=/instantclient_12_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
然后我创建了一个符号链接:
ln -s libclntsh.so.12.1 libclntsh.so
之后,转到cx_oracle文件夹并执行以下操作:
python3 setup.py build
python3 setup.py install
由于某些原因,sudo python3 setup.py install对此不起作用.
带有相关问题链接的更新:
我的下一个问题是让环境变量在shell实例之外持久存在,因此我不必每次都定义环境变量.当我回显它们时,我放入profile.d中的环境变量就会出现,但是python无法正确导入cx_oracle,并且由于某种原因,我不得不再次导出环境变量.我不知道发布与问题相关的其他问题的正确过程,因此在这里打开了一个新问题:
Linux profile.d environment variables don’t work with cx_oracle in Python
请帮我解决这个问题,我感到完全陷于尝试使其工作的过程中.当我回显它们时,会显示环境变量,但是如果我在运行python代码之前再次将其导出,则它们似乎才起作用.
解决方法:
更新
作为Petriborg suggested,在构建时设置LD_RUN_PATH将包括在安装过程中构建的cx_Oracle共享库中Oracle共享库文件的路径.正如我在第一个答案中所建议的那样,这消除了对LD_LIBRARY_PATH的需求.
对于您使用的RPM,应将ORACLE_HOME设置为/usr/lib/oracle/12.1/client.如果您使用的是pip:
$export ORACLE_HOME=/usr/lib/oracle/12.1/client
$export LD_RUN_PATH=/usr/lib/oracle/12.1/client/lib:$LD_RUN_PATH
$pip install cx_Oracle
$python -c 'import cx_Oracle; print(cx_Oracle.version)'
5.1.3
阅读此documentation,以获取有关安装和执行使用客户端库的应用程序的一些信息.
内容总结
以上是互联网集市为您收集整理的python-cx_Oracle无法识别要在Linux上安装的Oracle软件的安装位置全部内容,希望文章能够帮你解决python-cx_Oracle无法识别要在Linux上安装的Oracle软件的安装位置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。