2

我一直很高兴地在运行 OS X 10.4 Tiger 的现有机器上使用 Django 和 MySQL 进行开发,并在新的 64 位 MacBook 上的 10.5 Leopard 中设置了类似的环境,并带有工作的 MySQL 和 Python 2.6.4。

但是,现在我希望他们进行交流,easy_install MySQL-python给了ld warnings file is not of the required architecture,这导致我测试了我的 Python 2.4.6 安装(来自Mac OS X 光盘映像):

>>> import sys
>>> sys.maxint
2147483647

啊。所以我的 Python 安装似乎是 32 位的,并且(我认为?)不会为我的 64 位 MySQL 安装 MySQL-python。OS X(主要是 1.2.2)上的 MySQL-python 有很多黑客攻击,但是 - 经过数小时的阅读 - 我很确定他们不会修复这种架构不匹配的问题。所以我被卡住了,因为我无法决定是否:

  • 放弃,删除64 位 MySQL安装(请彻底方法?)并改用 32 位 MySQL 光盘映像;
  • 从 tarball以64 位模式重新安装 Python,
    --with-universal archs-64-bit详见Python.org 的 2.6 新闻--enable-universalsdk=

因此,对于遇到此问题的任何人,我的问题是:

  1. 在 OS X 10.5 上安装 64 位 Python 值得费心吗?
  2. 如果是这样,(天真、懒惰的问题!)这两个必需的参数是如何组合的?
  3. 如果我只是跳过 32 位(如在我的工作设置中),我错过了什么?

我正在轻松安装,很容易在其他机器上复制(可能是学生使用)所以我真的很欢迎你的意见,拜托!

4

2 回答 2

3

我在此处发布此内容,以防有人找到此页面并需要答案...

解决方案:删除 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

从下载页面安装最新的 32 位 MySQL 包并根据需要进行设置

使用以下命令删除 MySQL-python:

easy_install -m MySQL-python

然后删除其中的 eggsite-packages并确保easy_install -m删除文件中的 package 行easy-install.pth

启动 MySQL,然后重新安装 MySQL-python(确保您获得最新版本 - 1.2.3 - 在撰写本文时):easy_install MySQL-python

测试它:

>>> import MySQLdb

对我来说,这解决了问题。无需编辑 _mysql.c (按照MySQL -python 1.2.2的建议)或弄乱任何其他设置。

如果您需要它们(如果上述方法失败,或者如果您真的想尝试 64 位安装),以下是研究时使用的一些链接:

请注意

“如果你去 64,那么你将不得不重新编译与 python、mysql 和 apache 交互的每一个东西,以作为 64 位拱程序工作”

对于 Snow Leopard 上的任何人:

最后,MacPython 2.7 安装程序现在涵盖 64 位。请参阅这篇文章了解运行 64 和/或 32 位之间的区别

于 2010-02-11T09:49:32.923 回答
1

我发现以下步骤(使用 Snow Leopard)让我获得了 64 位 MySQL 和 64 位 Python(在 2011 年初的 Macbook Pro 上)

  1. 安装 Xcode
  2. 安装 64 位 MySQL
  3. 安装最新的python
  4. 安装easy_install

    从http://pypi.python.org/pypi/setuptools下载并安装适当的 egg ,然后运行 ​​shell 脚本(在我的例子中……)
    sudo sh setuptools-0.6c11-py2.6.egg

  5. 安装 MySQLdb python 库

    export PATH=$PATH:/usr/local/mysql/bin/
    sudo easy_install MySQL-python

  6. 更改 ~/.profile 以包含以下行:

    导出 VERSIONER_PYTHON_PREFER_32_BIT=否
    导出 VERSIONER_PYTHON_PREFER_64_BIT=是

  7. 使 libmysqlclient.18.dylib 可用

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

于 2011-04-10T12:59:32.343 回答