我已经尝试了几天让MySQLdb和cx_Oracle在Mountain Lion上一起成功运行无济于事。似乎我只能运行其中一个而不是两个。这是我的规格...
使用(64位)Intel Core i7处理器运行的Mac OS X 10.8.2
PYTHON :
〜:python --version
Python 2.7.2
〜:文件which python
/ usr / bin / python:具有2个体系结构的Mach-O通用二进制文件
/ usr / bin / python(用于架构i386):Mach-O可执行文件i386
/ usr / bin / python(用于体系结构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,对于apple-darwin10.3.0(i386),使用readline 5.1
〜:文件which mysql
/ usr / local / mysql / bin / mysql:Mach-O 64位可执行文件x86_64
MySQLdb的:
〜:file /Library/Python/2.7/site-packages/_mysql.so
/Library/Python/2.7/site-packages/_mysql.so:Mach -O 64位软件包x86_64
的Oracle :
版本10.2.0.4(32位)Instant Client和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时遇到以下错误:
追踪(最近的呼叫最后):
文件“”,第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安装需要什么的相互矛盾的信息。我遇到了分段错误错误,libclntsh.dylib错误和clang错误等。也许,此时,信息过载已经让我圈了很长时间,以至于我无法清楚地看到解决方案?但我知道必须有办法...
我事先感谢你们提供任何帮助。
干杯!
答案 0 :(得分:0)
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
您必须像安装cx_Oracle一样安装MySql 32位并保留
export VERSIONER_PYTHON_PREFER_32_BIT=yes