6

我在安装 cx_oracle 时遇到问题。我已经安装了 oracle instantclient 和 cx_oracle oracle 软件包,我在导入 cx_oracle 时遇到了这个错误。我正在运行 ubuntu 11.10 作为主机。

import cx_Oracle
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: /usr/lib/python2.7/dist-packages/cx_Oracle.so: undefined symbol:PyUnicodeUCS2_AsEncodedString

任何人都知道如何解决这个问题

干杯

4

2 回答 2

3

很可能您的 Python 安装使用另一种 unicode 格式 (ucs4) 并且 cx_oracle 是使用 ucs2 编译的。

您可以使用 unicode 标志安装 cx_Oracle 5.0.4。这对我有用,但有一些错误:奇怪的 Oracle 错误:“无效的格式文本”

或者自己编译最新的 cx_oracle。 http://mrpolo.com.ve/?p=178(它的一些语言我不知道,但它有帮助)

于 2011-11-05T16:51:24.517 回答
1

我除了@froZieglers 的回答。当我来到cx_Oracle页面时,没有“......Unicode......” - 可供下载的变体。幸运的是,我自己从源代码编译它并没有我预期的那么麻烦。

这是我所做的总结(Ubuntu 12.04 LTS,64 位):

  • 使用外星人(11g、64 位等) 安装正确的Oracle XE 客户端 rpm
    • 它安装/u01/...了,我当然也必须调整.profile
  • 下载 cx_Oracle source-tar , untar, cd 到
    • 如文本文件中所述,我ln -s在 Oracle 的 so-lib 上执行了命令BUILD
  • 安装Python 头文件sudo aptitude install python-dev
  • 编译_python setup.py build
  • 安装_sudo python setup.by install
    • 第一次尝试失败distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation
    • 修补后setup.py的设置userOracleHome = "/u01/app/oracle/product/11.2.0/xe"os.getenv("ORACLE_HOME")
    • sudo python setup.by install然后工作
  • 检查成功python -c 'import cx_Oracle'
于 2012-07-30T09:13:41.903 回答