【问题标题】:Help installing cx_Oracle帮助安装 cx_Oracle
【发布时间】:2010-12-15 05:56:29
【问题描述】:

我正在尝试为 Python 2.6 安装 cx_Oracle,但它失败了。我对 C 或 MS Vis 知之甚少。 Studio 的编译器甚至可以自己修复它。

这是命令行上的输出:

C:\pydev\cx_Oracle-5.0.1>C:\python26\python setup.py install
running install
running build
running build_ext
building 'cx_Oracle' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Oracle\instantclient\sdk\include -IC:\p
ython26\include -IC:\python26\PC /Tccx_Oracle.c /Fobuild\temp.win32-2.6-11g\Release\cx_Oracle.obj -DBUILD_VERSION=5.0.1
cx_Oracle.c
c:\pydev\cx_oracle-5.0.1\StringVar.c(392) : warning C4018: '>' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\StringVar.c(417) : warning C4018: '>' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\ObjectVar.c(117) : warning C4018: '<' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\ObjectVar.c(134) : warning C4018: '<' : signed/unsigned mismatch
c:\pydev\cx_oracle-5.0.1\Variable.c(331) : error C2036: 'void *' : unknown size
c:\pydev\cx_oracle-5.0.1\Variable.c(878) : warning C4244: '=' : conversion from 'sb2' to 'sb1', possible loss of data
c:\pydev\cx_oracle-5.0.1\Variable.c(914) : warning C4018: '<' : signed/unsigned mismatch
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2

有人知道如何解决这个问题吗? (我也可能对那个 cl.exe 文件有问题,我想我记得在其他地方看到过这个问题,但我有四台 Windows 机器可能在那里有问题。)。

-------------- 编辑 -------------- ---------------

我不使用预编译安装程序的原因是因为当我尝试运行该模块时,我得到以下信息:

Python 2.6.3 (r263rc1:75186, Oct 2 2009, 20:40:30) [MSC v.1500 32 bit (Intel)] on win32 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 导入 cx_Oracle 回溯(最近一次通话最后): 文件“”,第 1 行,在 ImportError:DLL 加载失败:找不到指定的模块。

我认为这意味着它没有正确安装。如果有人能告诉我我在这里做错了什么,那也是一个完全可以接受的答案。

------------------ EDIT2 -------------- ---------------

我已从 Oracle's Basic Client 版本 11.1.0.7 中检索到 所有 个文件。我还没有尝试安装更重要的客户端。我正在下载一个。

%ORACLE_HOME%=C:\Oracle\instantclient\ #The directory where the above files have been extracted.

更多信息

  • cx_Oracle 的 setup.py 的当前目录是 C:\pydev\cx_Oracle-5.0.1
  • Python 版本为 2.6.3
  • Python 的当前目录是 C:\Python26 -- 访问 python 2.6 -> 在命令行输入 py26 会映射到 C:\python26\python

【问题讨论】:

  • 编译器中的错误只是警告,不应该停止构建 - 是否还有其他错误(仍然使用预构建的错误,因为我怀疑您最终会遇到相同的问题)
  • 对于预建的 - 你的路径是什么,你的 cx_oracle 和 oracle DLLS 安装在哪里
  • 在安装预构建的 cx_oracle 后,我必须将 Instantclient 目录添加到 PATH 变量中才能使 python 脚本正常工作

标签: python cx-oracle


【解决方案1】:

为什么不使用像Windows Installer (Oracle 10g, Python 2.6) 这样的二进制包?

其他二进制包见http://cx-oracle.sourceforge.net/


附录(根据要求):您必须确保使用 cx_Oracle :

  • 如果此环境变量不存在,请设置 ORACLE_HOME(参见 Oracle FAQ
  • python 可以找到 oraocci11.dll 用于 Oracle 11g,oraocci10.dll 用于 Oracle 10g 或 oraclient9.dll 用于 Oracle 9i,方法是添加 DLL 所在的 PATH 环境变量中的文件夹(应该是 %ORACLE_HOME%/bin)李>
  • 使用正确的二进制包(即为正确的 Python/Oracle 版本构建)

【讨论】:

  • +1 因为它是一个正确的答案(而且很容易被忽略——我什至忘了写我已经试过了),但不幸的是它并没有真正解决我的问题......这是我真希望自己愚蠢到可以忽略显而易见的情况的情况之一……
  • 我假设的问题是加载 oracle dll。检查 c:\Oracle 是否在您的 PATH 环境变量中
  • 技术上这个答案不完整。您能否提出将 ORACLE_HOME 包含在我的 PATH 变量中的建议?
  • 非常感谢。你是救生员。
  • 我可能错了,但我不认为设置 ORACLE_HOME 环境变量是在 Windows 上执行此操作的首选方法。相反,您应该使用 Home 选择器:download.oracle.com/docs/cd/E11882_01/em.112/e12255/…
【解决方案2】:

您还需要在计算机上安装某种类型的 Oracle 客户端,因为 cx_Oracle 只是 Python 和 Oracle 客户端之间的桥梁。有效的 Oracle 客户端包括完整的 Oracle 安装(如 Standard 或 XE)或 Instant Client

来自README

请注意,Oracle 客户端(或 服务器)安装是必需的 为了使用 cx_Oracle。如果你不 需要附带的工具 完整的客户端安装,它是 建议安装 Instant 更容易安装的客户端。

我之前没有在 Windows 上安装过,但您可能需要设置 ORACLE_HOME 环境变量,以便 cx_Oracle 知道在哪里查找。

【讨论】:

  • 我正在尝试安装更充实的版本,但我已经“安装”了基本版本(没有 .msi 或 .exe)。
  • 如果您还没有安装在 Windows 上,您是否安装在 Ubuntu/Debian 上?接下来我想这样做。
  • 我查看了本指南并做了一些小的调整(我没有使用 XE,而是使用 Instant Client 的标准):catherinedevlin.blogspot.com/2008/06/…
【解决方案3】:

如果您使用 Anaconda Python x64,则为 easier

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

(它将安装正确的 Oracle 客户端)


如果出现以下错误:

[Anaconda2] C:\Users\User>conda install -c https://conda.anaconda.org/anaconda c
x_oracle
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .................
Package plan for installation in environment C:\Anaconda2:

The following NEW packages will be INSTALLED:

    cx_oracle:            5.1.2-py27_0
    oracle-instantclient: 11.2.0.4.0-0

The following packages will be UPDATED:

    conda:                3.19.1-py27_0 --> 4.0.5-py27_0
    pip:                  8.0.2-py27_0  --> 8.1.1-py27_0
    pyyaml:               3.11-py27_2   --> 3.11-py27_3
    setuptools:           19.6.2-py27_0 --> 20.3-py27_0
    wheel:                0.26.0-py27_1 --> 0.29.0-py27_0

Proceed ([y]/n)? y

Unlinking packages ...
An unexpected error has occurred, please consider sending the            |   0%
following traceback to the conda GitHub issue tracker at:

    https://github.com/conda/conda/issues

Include the output of the command 'conda info' in your report.


Traceback (most recent call last):
  File "C:\Anaconda2\Scripts\conda-script.py", line 4, in <module>
    sys.exit(main())
  File "C:\Anaconda2\lib\site-packages\conda\cli\main.py", line 173, in main
    args_func(args, p)
  File "C:\Anaconda2\lib\site-packages\conda\cli\main.py", line 180, in args_fun
c
    args.func(args, p)
  File "C:\Anaconda2\lib\site-packages\conda\cli\main_install.py", line 45, in e
xecute
    install.install(args, parser, 'install')
  File "C:\Anaconda2\lib\site-packages\conda\cli\install.py", line 423, in insta
ll
    plan.execute_actions(actions, index, verbose=not args.quiet)
  File "C:\Anaconda2\lib\site-packages\conda\plan.py", line 538, in execute_acti
ons
    inst.execute_instructions(plan, index, verbose)
  File "C:\Anaconda2\lib\site-packages\conda\instructions.py", line 148, in exec
ute_instructions
    cmd(state, arg)
  File "C:\Anaconda2\lib\site-packages\conda\instructions.py", line 95, in UNLIN
K_CMD
    install.unlink(state['prefix'], arg)
  File "C:\Anaconda2\lib\site-packages\conda\install.py", line 714, in unlink
    os.unlink(meta_path)
WindowsError: [Error 5] Access is denied: 'C:\\Anaconda2\\conda-meta\\conda-3.19
.1-py27_0.json'

[Anaconda2] C:\Users\User>

尝试以管理员身份运行 Anaconda 提示符:

【讨论】:

  • 正在获取包元数据:...... 错误:在当前 win-32 频道中找不到匹配的包:cx_oracle
猜你喜欢
  • 2011-07-28
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多