我一直在运行 OS X 10.4 Tiger 的现有机器上愉快地使用 Django 和 MySQL 进行开发,并在新的 64 位 MacBook 上的 10.5 Leopard 中设置了类似的环境,并运行了 MySQL 和 Python 2.6。 4.
但是,现在我想让它们进行通信,easy_install MySQL-python
给出了 ld 警告
,文件不符合所需的架构
,这让我测试了我的 Python 2.4.6 安装(来自 Mac OS X disc image ):
>>> import sys
>>> sys.maxint
2147483647
啊。所以我的 Python 安装似乎是 32 位的,并且(我认为?)不会为我的 64 位 MySQL 安装 MySQL-python。 OS X 上的 MySQL-python 有很多 hack(主要是 1.2.2),但是 - 经过几个小时的阅读 - 我很确定他们不会修复这种架构不匹配的问题。所以我陷入困境,因为我无法决定是否:
- 放弃,删除 64-bit MySQL安装(请提供完整的方法?)并使用 32 位 MySQL 光盘镜像;
- 从 tarball 以 64 位模式重新安装 Python,
--with-universal archs-64-bit
和--enable-universalsdk=
如detailed in Python.org's 2.6 news .
所以我对遇到此问题的人的问题是:
- 在 OS X 10.5 上安装 64 位 Python 值得费心吗?
- 如果是这样,(天真、懒惰的问题!)两个必需的参数如何组合?
- 如果我只是跳过 32 位(如我的工作设置),我会错过什么?
我正在追求一个无忧无虑的安装,很容易在其他机器上重现(可能是学生使用),所以我非常欢迎您的意见!
最佳答案
我将其发布在此处,以防有人找到此页面并需要答案...
解决方案:remove the MySQL 64 位安装(更改以下内容以匹配您的 MySQL 版本号):
cd /usr/local
sudo rm -rf mysql-5.1.41-osx10.5-x86_64
rm -r mysql
cd /Library/Receipts/
rm -r mysql-5.1.41-osx10.5-x86_64.pkg
从downloads page安装最新的32位MySQL包和 set it up as required .
删除 MySQL-python:
easy_install -m MySQL-python
然后删除 site-packages
中的 Egg 并确保 easy_install -m
删除了 easy-install.pth
文件中的 package 行那里。
启动 MySQL,然后重新安装 MySQL-python(确保您在撰写本文时获得最新版本 - 1.2.3):easy_install MySQL-python
测试一下:
>>> import MySQLdb
对我来说,这解决了问题。无需编辑 _mysql.c( as advised 为 MySQL-python 1.2.2 )或搞乱任何其他设置。
如果您需要它们(如果上述方法失败,或者您确实想尝试 64 位安装),以下是研究此问题时使用的一些链接:
- Andy Dustman, MySQLdb developer
- Django on Leopard
- Jim B's Blog: installing fresh version of python 2.6.4
- Search results for setuptools ARCHFLAGS 32 bit - MarkMail
- MySQL-Python and Apple OSX 10.5 (Leopard)
- Installing Django / Python / Mysql on OS X | DavidMichaelThompson
但是note this :
"if you go 64, then you will have to recompile every single thing that interacts with python, mysql and apache to work as a 64 bit arch program"
对于雪豹上的任何人:
最后,MacPython 2.7 installer现在涵盖 64 位。请参阅此帖子了解 differences between running 64 and/or 32 bit .
关于MySQL-python 1.2.3 和 OS X 10.5 : 64- or 32-bit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1969222/