【发布时间】:2012-01-06 04:25:05
【问题描述】:
我已经安装了 oracle client 和 oracle client-dev,并设置了 ORACLE_HOME 环境变量。然而,当我尝试安装 tux_oracle(python setup.py build)时,我得到以下信息: 致命错误:oci.h:没有这样的文件或目录
【问题讨论】:
我已经安装了 oracle client 和 oracle client-dev,并设置了 ORACLE_HOME 环境变量。然而,当我尝试安装 tux_oracle(python setup.py build)时,我得到以下信息: 致命错误:oci.h:没有这样的文件或目录
【问题讨论】:
我正在使用cx_oracle 连接到我的 Oracle 数据库。你试过了吗?
【讨论】:
该头文件可以在开发套件中找到。出于某种原因,它不包含在默认分发包中。来看看
http://my.opera.com/onyxluo/blog/cannot-find-oci-h-in-oracle9-2-client
这是页面内容,为您提供方便。我从 Google 缓存中获取它,因为我到达那里时页面已关闭。
这个问题的原因是因为OCI(Oracle Call 接口)包没有安装在Oracle9.2客户端。默认 “oci.h”的路径是 $ORACLE_HOME/rdbms/demo。这个问题不存在 在 Oracle 数据库 9.2.0.1 上。但对于 Oracle 9.2.0.1 客户端,OCI 包 即使您选择完整的套餐也不包含在客户端中 客户端安装。
解决方案:
- 先安装 Oracle 9.2.0.1 客户端。
- 在 OUI(Oracle Universal Installer) 中,使用与 Oracle 9.2.0.1 客户端相同的 oracle home,然后选择 Oracle Database install。
- 在数据库安装中选择自定义
- 取消选中 Enterprise Manager 和 Oracle 数据库以及 OCI 和 OCCI 以外的其他选项。
安装 OCI 后,$ORACLE_HOME/rdbms/demo 将包含 oci.h 和 其他 *.h 文件。
【讨论】:
嗯,答案是安装 cx_Oracle 而不是 tx_Oracle。在 Ubuntu 中执行此操作的方法如下:
sudo apt-get -i 外星人
sudo alien -d oracle-instantclient11.2-sqlplus-11.2.0.2.0.i386.rpm
sudo dpkg -i oracle-instantclient11.2-basic_11.2.0.2.0-2_i386.deb
导出 ORACLE_HOME=/usr/lib/oracle/11.2/client 源码 oracle.sh
sudo vi /etc/ld.so.conf.d/oracle.conf 其中必须包含: "$ORACLE_HOME/lib" sudo ldconfig
须藤外星人-d cx_Oracle-5.1-11g-py32-1.i386.rpm sudo dpkg -i cx-oracle_5.1-2_i386.deb
现在您连接到 oracle 应该没有问题了。 来自python类型:
导入 cx_Oracle
要连接到数据库,请在 tsnames.ora 中指定连接字符串或直接:
connection_string = '用户名/密码@(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA= (SID=MY_SID)))'
【讨论】: