1

几天来,我一直在尝试让 MySQLdb 和 cx_Oracle 在 Mountain Lion 上成功运行,但无济于事。看来我只能让一个或另一个运行,但不能同时运行。这是我的规格...

运行(64 位)英特尔酷睿 i7 处理器的 Mac OS X 10.8.2

Python :
~: python --version
Python 2.7.2

~: file which python
/usr/bin/python: Mach-O Universal binary with 2 architectures
/usr/bin/python (for architecture i386): Mach-O executable i386
/usr/bin/python (for architecture x86_64): Mach-O 64 位可执行 x86_64

在 .bashrc 中,我设置了以下内容...
export VERSIONER_PYTHON_PREFER_32_BIT=yes

MySQL :
~: mysql --version
mysql Ver 14.14 Distrib 5.1.63, for apple-darwin10.3.0 (i386) using readline 5.1
~: file which mysql
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64

MySQLdb :
~: 文件 /Library/Python/2.7/site-packages/_mysql.so
/Library/Python/2.7/site-packages/_mysql.so: Mach-O 64-bit bundle x86_64

Oracle
版本 10.2.0.4(32 位)即时客户端和 SDK

我使用 pip 来安装 cx_Oracle 和 mysql-python (MySQLdb)。目前,我可以成功交互导入 cx_Oracle,但是,尝试交互导入 MySQLdb 时出现以下错误:

回溯(最后一次调用):
文件“”,第 1 行,在
文件“/Library/Python/2.7/site-packages/MySQLdb/init .py”中,第 19 行,在 import _mysql ImportError : dlopen(/Library/Python /2.7/site-packages/_mysql.so, 2): 没有找到合适的图片。确实找到了: /Library/Python/2.7/site-packages/_mysql.so: mach-o,但是架构错误


在完成所有阅读和故障排除之后,我了解到当 Python 和 MySQL 不在同一架构上运行时,会出现此错误。由于我有 64 位版本的 MySQL,我可以删除我放入 .bashrc 的环境变量,该变量将首选项设置为 32 位版本的 Python(导出 VERSIONER_PYTHON_PREFER_32_BIT=yes)并且 MySQLdb 导入有效。但是,然后在导入 cx_Oracle 时出现以下错误:

Traceback(最近一次调用最后一次):
文件“”,第 1 行,在
ImportError 中:dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so,2):找不到符号:_OCIAttrGet
引用自:/Library/Python /2.7/site-packages/cx_Oracle.so预期在: /Library/Python/2.7/site-packages/cx_Oracle.so
中的平面命名空间

在深入这个兔子洞时,我发现关于我为 cx_Oracle 设置的内容、需要 32 位架构以及需要 64 位跟踪一直到我的 Oracle 安装的信息相互矛盾。我遇到了segmentation fault错误,libclntsh.dylib错误和clang错误等。也许,在这一点上,信息过载让我在圈子里转了这么久,我看不清解决方案?但我知道必须有办法...

我提前感谢您在这方面的任何帮助。

干杯!

4

1 回答 1

0

你写了:

/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64

您必须像安装 cx_Oracle 一样安装 MySql 32 位并保留

export VERSIONER_PYTHON_PREFER_32_BIT=yes
于 2013-07-01T11:06:18.440 回答