python - 如何在 OS X Leopard 上安装 MySQL 和 Python MySQL 包?或者我如何学习如何使用 OS X 成为网络开发人员?

标签 python mysql django macos sysadmin

我是 Mac OS X 的新手,我正准备扔掉我全新的 MacBook Pro窗外。 Mac OS X Leopard上所有关于搭建Django开发环境的教程是错误的。他们都跳过了一个步骤,或者假设您已经以一种方式设置了某些东西,或者只是假设我知道一件我不能不知道的事情。

我非常熟悉如何在 Ubuntu/Linux 上设置环境,而且我唯一遇到的问题是 OS X是如何安装 MySQL,自动启动它,以及安装 Python MySQL 绑定(bind)。我认为我的错误是使用了一大堆我不完全理解的工具;我使用 fink 安装 MySQL 及其开发库,然后尝试从源代码构建 Python-MySQL 绑定(bind)(但它们不会构建。)

更新: 我从 http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg 安装了二进制 MySQL 包,并且我运行了 MySQL 服务器(可以使用管理员访问。) 我从 port 得到的 MySQL 版本是垃圾,我根本无法运行它。

我根据我选择的答案修改了 Python-MySQL 包的源代码,但我仍然遇到我在评论中列出的编译错误。我能够通过将/usr/local/mysql/bin/添加到我的“~/.profile”文件中的路径来修复这些问题。 “ PATH=/usr/local/mysql/bin:$PATH "

感谢您的帮助,我对编辑源代码非常谨慎,因为这个操作在 Ubuntu 上非常容易,但我以后会更愿意尝试。我真的很想念 Ubuntu 的“apt-get”命令;有时它使生活变得非常轻松和简单。我已经有一个 Ubuntu VMware在我的 Mac 上运行的图像,所以我总是可以将其用作后备(加上它更接近我的生产机器,因此应该是调试生产问题的良好测试环境。)

最佳答案

MySQL 和 MySQL-dev 安装是否顺利?你能运行 MySQL,连接到它等等吗? /usr/local/mysql/include 是否包含大量头文件? (我那里有46个头文件,供引用)。

如果是这样,MySQL 应该可以运行了。然而,编译 MySQL-python 仍然需要一些手动步骤。

This是一个不错的指南:我在下面列出了重要的步骤。


  1. 下载 MySQL-python source (撰写本文时为 v1.2.2:所有后续说明均针对此版本)

    $ tar xzf MySQL-python-1.2.2.tar.gz && cd MySQL-python-1.2.2
    
  2. 编辑 _mysql.c:删除第 37-39 行并更改第 481-482 行。这是差异:

    37,39d36
    < #ifndef uint
    < #define uint unsigned int
    < #endif
    484,485c481,482
    <         uint port = MYSQL_PORT;
    <         uint client_flag = 0;
    ---
    >         unsigned int port = MYSQL_PORT;
    >         unsigned int client_flag = 0;
    
  3. 将库符号链接(symbolic link)到 MySQL-python 期望它们的位置:

    $ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
    
  4. 在您的 MySQL-python-1.2.2 目录中,重建您的包:

    $ sudo python setup.py build
    

    注意:你会收到一个警告,忽略它。

  5. 安装包:

    $ sudo python setup.py install
    

关于启动MySQL,有说明here将其作为服务启动。就个人而言,我只是运行

sudo mysqld_safe 

手动输入密码后,使用 ^Zbg 作为背景。

关于python - 如何在 OS X Leopard 上安装 MySQL 和 Python MySQL 包?或者我如何学习如何使用 OS X 成为网络开发人员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/395509/

相关文章:

python - 将 Python 2.7 中使用子进程的代码转换为 Python 2.3

mysql - 生成选择的ajax速度

Django:基于注释进行注释

php - 在 PHP 中如何将函数用作 IF 语句的参数?

php - 向MYSQL中插入字符串和数组的组合

Django - MEDIA_ROOT 和 MEDIA_URL

python - django jsonfield 保存到数据库

python - 如何将 python 变量传递到 bash 脚本函数中

python - 多重继承: missing required positional arguments that aren't actually required

python - 使用 lxml 中的 Element 用换行符打印每个属性