【问题标题】:Mac OS X + Python + Django + MySQLMac OS X + Python + Django + MySQL
【发布时间】:2014-03-14 14:15:10
【问题描述】:

我在几天内工作了很多小时,试图让 MySQL 与 Mac OS X、Python(我尝试过 2.7 和 3.3)和 Django 1.6 一起工作。

这个主题在许多网页上都有涉及,无论是在 SO 还是其他地方,并且持续了很多年(一个解决方案专门使用 MySQLdb 1.2.2,最后一次修改是在 2007 年 3 月)。有些帖子似乎说他们可以正常工作,但是当我尝试他们的解决方案时,它对我不起作用。另一方面,几个月前的一篇帖子直截了当地说不能。

问题的核心似乎是安装驱动程序(无论是 MySQLdb 还是 mysql-connector),并且症状因您遵循的说明而异。当您最终尝试“python manage.py syncdb”时,来自各种尝试解决方案的典型显示停止是“没有名为 'MySQLdb' 的模块”和“找不到符号:_mysql_affected_rows”。

有人想知道,尝试这么多解决方案的行为本身是否会弄乱我的开发环境,以致原本可以用干净的石板工作的东西现在行不通了。是的,我在有和没有 virtualenv 的情况下都试过了。我不知道 virtualenv 是否让我靠近了,因为我不知道如何识别靠近。

我的机器上碰巧有 OS X 10.7.5 (Lion) 和 MySQL 5.0。这些都不是最新版本,但我不知道这是否重要,我不愿意继续改变。它们适用于我机器上的其他 MySQL 应用程序。如果有适用于更高版本的解决方案,我很乐意升级其中一个或两个。

有没有人真正使用 Python 2.7 或 3.3 的配置作为这篇文章的标题工作?如果是这样,如果您能指导我找到解决方案,我将不胜感激。

更新

我只是想让读者知道,我最终确实让我的应用程序在 Python 3.3、Django 1.6 和 MySQL 之类的环境下运行。我的应用已经顺利运行了几个月。

很抱歉,我没有时间重新创建我为使其正常工作而遵循的许多小时的步骤和错误步骤。我将概述要点:

  • 我十多年前开始使用 Mac,从 PowerBooks 开始,所以我的 Mac 上有很多旧东西。我最终决定要做的第一件事就是摆脱 Python 和 Django 的所有副本; MacPorts 和 Fink 等安装程序;以及他们喜欢将安装放入的任何目录。在学习如何执行此操作以及下面提到的所有其他步骤方面,Google 对我当然是非常宝贵的。

  • 然后我开始使用 Homebrew 作为我唯一的命令行安装程序(尽可能让我的 Mac 重新开始)。

  • 我也使用了 virtualenv。我实际上不太了解 virtualenv,也没有时间研究它,但我已经开始使用它了,这似乎是个好主意。

  • 嗯,在 virtualenv 中,我也使用了 pip,我猜它也是一个命令行安装程序,但它似乎是 Homebrew/virtualenv 方法的一部分。抱歉,我无法提供这方面的任何专业知识。

  • 正如我所提到的,该应用程序在某种程度上可以与 MySQL 配合使用,但是当我使用 Homebrew 卸载 MySQL 并安装 MariaDB 时,它开始运行良好。据我所知,Django、Sequel Pro、PyCharm 的 DB 功能以及其他认为它们正在与 MySQL 对话的程序无法区分 MySQL 和 MariaDB。我也非常喜欢 MariaDB 在线文档。诚然,“MariaDB”不是一个好名字,但“MySQL”也不是。

底线:如果有人告诉您不可能在 Mac 上让 Python3.3 和 Django1.6 与 MySQL(或至少 MariaDB)一起运行,请不要相信他们。这是可以做到的,只是如果您的系统有很多遗留文件和应用程序可能会与您正在尝试做的事情发生冲突,这将很难做到。

还有一件事:当我开始从事这个项目时,我暂停了一个 GAE 应用程序的工作,我已经在一年多的时间里取得了长足的进步。因为我很快就会回到那个项目,所以我想在我的机器上保持我的 GAE 安装是最新的,但遗憾的是,我不能再运行 GAE 安装程序来进行更新。我收到一些关于无法找到 python2.5 的错误。叹。当我回到那个项目工作时,这就是我必须期待解决的问题。

【问题讨论】:

  • 你在使用 virtualenv 并且你安装了 MySQL-python 吗?您可能还想试试这个:stackoverflow.com/a/5054267/1637351
  • 使用 MySQL 连接器/Python 时发生了什么具体问题?有一个 Django 1.6 的错误正在修复并很快发布,但如果出现其他问题,请随时报告。

标签: python mysql django macos


【解决方案1】:

您可以尝试使用纯python pymysql:

sudo easy_install pymysql

(如果已安装,请使用pip。)然后,在manage.py 中的execute_from_command_line 之前添加:

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

【讨论】:

    【解决方案2】:

    我感觉到你的挣扎。我经历了同样的事情,发现设置过程非常令人沮丧。我真的不知道您在抛出异常的网站上遵循了哪些说明。但我发现所有这些说明都缺少一个或两个小的先决条件。例如,在进行任何 pip 安装之前需要安装 xcode 和命令行工具。对于连接器,如果您使用的是 mysql-python,则可能需要安装 python-devel。我用this instruction。您可能是对的,经过如此多的安装尝试,您的系统可能已损坏,您可能需要重新安装 osx 并再次开始清理。这很痛苦,但这是我必须做的才能让它发挥作用。我希望你的下一次尝试成功。

    【讨论】:

    • 我提出你的问题是因为我认为你分享它非常有用,而且毫无疑问还有其他人可能也觉得它有用。
    猜你喜欢
    • 2012-01-31
    • 2012-04-05
    • 2013-04-17
    • 2011-09-27
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多