python - Anaconda 3.5(64 位 Windows)安装 cx_Oracle

标签 python oracle anaconda cx-oracle

我已经为 Windows 64 位安装了 Anaconda 3.5,我需要使用包“cx_Oracle”连接到 Oracle 数据库。

我试过 python 的方式:

conda install -c https://conda.anaconda.org/anaconda cx_oracle

错误信息如下:

Hint: the following packages conflict with each other:
  - cx_oracle
  - python 3.5*
Use 'conda info cx_oracle' etc. to see the dependencies for each package.
Note that the following features are enabled:
  - vc14

cx_oracle 似乎与 Python 3.5 不兼容。

在此之后,我也尝试过直接用二进制安装:

python setup.py install

它会抛出一堆错误,例如:

cx_Oracle.obj : error LNK2001: unresolved external symbol OCILobGetChunkSize
cx_Oracle.obj : error LNK2001: unresolved external symbol OCIStmtExecute
cx_Oracle.obj : error LNK2001: unresolved external symbol OCILobFileClose

有没有办法为 Anaconda 3.5 安装 cx_oracle?

最佳答案

这有点不平凡。然而可行。请按照以下步骤操作:

1) 从下载适用于 Windows x64 的 Oracle Instant 客户端

http://www.oracle.com/technetwork/topics/winx64soft-089540.html

例如选择客户,例如11.2.0.4

-> instantclient-basic-windows.x64-11.2.0.4.0.zip

-> instantclient-sdk-windows.x64-12.1.0.2.0.zip

2) 创建目录并在其中解压客户端和 sdk:

例如c:\ora\11gx64

3) 设置 ORACLE_HOME 和 TNS_ADMIN

参见 https://superuser.com/questions/949560/how-do-i-set-system-environment-variables-in-windows-10详情

例如ORACLE_HOME=c:\ora\11gx64

TNS_ADMIN=c:\ora\11gx64

还要在你的 %PATH% 中添加 %ORACLE_HOME%

4) 在创建的目录中放入文件 tnsnames.ora 并填充到 db 的连接字符串:

%ORACLE_HOME%**tnsnames.ora**

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

-> 用你的主机名替换 127.0.0.1

->用你的 SID 替换 XE

5) 我想您已经安装了 Python。

-> 否则访问 Python 下载页面

->安装python(撰写本文时为3.6.1)

-> 如果没有安装 pip ( https://pip.pypa.io/en/stable/installing/#do-i-need-to-install-pip )

->执行python get-pip.py

6) 下载并安装 Visual C++ 2015 构建工具

-> 搜索 Visual C++ 2015 构建工具 -> 安装 visualcppbuildtools_full.exe

7)使用pip安装cx_oracle

  pip install cx_oracle

(在撰写本文时,默认安装的 5.3 版存在问题,因此必须安装 6.0b2 版)

  python -m pip install cx_Oracle --pre

在我看来,conda 和 pip 的第一步是通用的。

关于python - Anaconda 3.5(64 位 Windows)安装 cx_Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34637836/

相关文章:

python 3 : Large Application Structure

sql - 热修复: not connected error when execution the sql statement, DPI-1010:not connected?

python - Anaconda 4.7.5 - 关于 conda-build <3.18.3 和 python 包问题的警告

python - 查看在 Python 装饰器中从哪一行调用函数

Python - 在递归函数中使用共享变量

python - 查找边界之间错误颜色的像素

sql - Oracle表达式的唯一约束

oracle - 如何使用 Oracle sql 查询获取数组

python - 如何将 py2app 与 Anaconda python 一起使用?

python - 将 pywin32 与 iPython 结合使用