我已经为 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/