如何在Mac OS X上安装MySQLdb(Python数据访问库到MySQL)?

How to install MySQLdb (Python data access library to MySQL) on Mac OS X?

我是一个python的新手,但是我花了一天的时间来研究如何让mysqldb正常工作,根据google的说法,这个宇宙包含了大量关于pita是什么的引用,以及大量过时的指南。考虑到这个网站是为了解决这些问题,我知道将来我需要一个解决方案的参考,我会问这个问题,提供我的答案,看看还有什么能浮到水面上。

所以问题是如何让mysqldb在macosx上工作?


使用python3的更新:您可以简单地使用conda install mysqlclient安装使用mysqldb所需的库,因为它目前已经存在。下面的问题是一条有用的线索:python 3 importerror:没有名为"configparser"的模块。安装mysqlclient将安装mysqlclient、mysql connector和llvmdev(至少它在我的计算机上安装了这3个库)。

这是我在这个问题上漫无目的的经历的故事。如果你对这个问题有更好的经验的话,我很乐意看到它被编辑或概括…用点魔法吧。

注意:下一段中的注释适用于雪豹,但不适用于狮子,这似乎需要64位MySQL

首先,作者(还是?)在mysqldb中,这里提到的一个最有害的问题是os x安装了32位版本的python,但是大多数普通的joe(包括我自己)可能会跳到安装64位版本的mysql上。糟糕的举动…如果已经安装了64位版本,请将其删除(此处提供了有关此复杂任务的说明),然后下载并安装32位版本(此处打包)

关于如何构建和安装mysqldb库,有许多步骤。它们经常有细微的差别。这对我来说似乎是最流行的,并提供了有效的解决方案。我在下面的几处编辑中复制了它

步骤0:在开始之前,我假设您已经在Mac上安装了MySQL、Python和GCC。

步骤1:从sourceforge下载最新的mysql for python适配器。

步骤2:提取下载的包:

1
tar xzvf MySQL-python-1.2.2.tar.gz

步骤3:在文件夹内,清洁包:

1
sudo python setup.py clean

几个额外的步骤(从这个评论)

步骤3b:删除mysql-python-1.2.2/build/*目录下的所有内容——不要相信"python setup.py clean"会为您做这些。

步骤3c:删除users/$user/.python eggs下的egg

步骤4:最初需要编辑mysql.c,但现在不再需要了。mysqldb社区现在似乎已经修复了这个bug。

步骤5:在lib下创建一个符号链接,指向名为mysql的子目录。这是它在编译期间查找的地方。

1
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

步骤6:编辑设置"posix.py"并更改以下内容

mysql_config.path="mysql_config"

mysql_config.path="/usr/local/mysql/bin/mysql_config"

步骤7:在同一目录中,重新生成包(忽略它附带的警告)

1
sudo python setup.py build

步骤8:安装软件包,就完成了。

1
sudo python setup.py install

步骤9:测试它是否工作。如果您可以导入mysqldb,它就会工作。

1
python

>>>import MySQLdb

步骤10:如果在尝试导入时收到错误,投诉Library not loaded: libmysqlclient.18.dylib以:Reason: image not found结尾,则需要创建一个额外的符号链接,即:

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

然后,您应该能够在没有任何错误的情况下执行ecx1(1)。

但最后一个问题是,如果从构建目录启动python,则会出现以下错误:

/library/python/2.5/site packages/mysql_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:userwarning:module _mysql已经从/library/python/2.5/site-packages/mysql_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc导入,但是xxxx/mysql-python-1.2.3c1正在添加到sys.path

这对谷歌来说很容易,但是为了省去麻烦,你最终会在这里(或者可能不会……不是一个特别适合未来使用的URL),并发现需要从构建目录中删除cx1(5),错误应该会消失。

正如我在顶部写的,我很想看到这个答案被概括,因为有许多其他关于这个可怕问题的具体经验。编辑掉,或者提供你自己的更好的答案。


Mac OS X 10.8(美洲狮)、10.9(小牛)、10.10(约塞米蒂)和10.11(El Capitan)的快速简便方法:

我假设您已经安装了Xcode、它的命令行工具、python和mysql。

  • 安装PIP:

    1
    sudo easy_install pip
  • 编辑~/.profile:(在Mac OS X 10.10中可能不需要)

    1
    nano ~/.profile

    复制并粘贴以下两行

    1
    2
    export PATH=/usr/local/mysql/bin:$PATH
    export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

    保存并退出。afterwords执行以下命令:

    1
    source  ~/.profile
  • 安装MySQL LDB

    1
    sudo pip install MySQL-python

    要测试一切是否正常,只需尝试

    1
    python -c"import MySQLdb"
  • 这对我来说很有吸引力。希望能有所帮助。

    如果遇到缺少库的错误:库未加载:libmysqlclient.18.dylib,则必须将其符号链接到/usr/lib,如下所示:

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


    通过MacPorts安装mysql和python,移植人员完成了所有困难的工作。

    1
    2
    sudo port install py26-mysql
    sudo port install mysql5-server

    应该安装你需要的。(有关re mysql服务器的注释,请参阅堆栈溢出)

    如果只需要连接到MySQL而不运行服务器,那么第一行就足够了。

    MacPorts Now(2013年初)将为操作系统的通用组合提供二进制下载,这是一种可执行的体系结构,对于其他人(如果您要求的话),它将从源代码构建。

    通常,当需要安装复杂的库等时,MacPorts(或Fink)会提供帮助。

    只有python代码,如果简单的c依赖项可以通过安装工具等来设置,但是如果混合使用这两者,就会变得复杂起来。


    安装PIP:

    1
    sudo easy_install pip

    安装BREW:

    1
    ruby -e"$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

    安装MySQL:

    1
    brew install mysql

    安装MySQL LDB

    1
    sudo pip install MySQL-python

    如果您有编译问题,请尝试编辑~/.profile文件,就像这里的答案一样。


    以下是我在完成步骤9时收到错误后必须完成的另一个步骤:

    1
    2
    3
    ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

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

    推荐人:谢谢!http://ageekstory.blogspot.com/2011_04_01_archive.html


    如Mac上安装mysql python所述:

    1
    2
    3
    pip uninstall MySQL-python
    brew install mysql
    pip install MySQL-python

    然后测试它:

    1
    python -c"import MySQLdb"


    刚刚遇到这个问题(又一次!)在得到一个新的狮子盒之后。

    我找到的最佳解决方案(仍然不是100%最佳,但有效):

    • 确保您有64位的python。如何检查库是否是基于Mac OS X构建的32位/64位库?

    • 如果没有,安装简易安装。http://packages.python.org/distribute/easy_install.html

    • 如果没有,安装gcc。

    你可以从苹果下载xcode/dev工具,这是一个大的下载-

    …但是我推荐这个Github,它有您需要的(并且没有xcode):https://github.com/kennethreitz/osx-gcc-installer

    我下载了他们为Lion预建的pkg,https://github.com/downloads/kennethreitz/osx-gcc-installer/gcc-10.7-v2.pkg

    • 确保下载了64位版本的MySQL社区。(DMG安装是一个简单的路径)http://dev.mysql.com/downloads/mysql/

    • 设置路径如下:

      导出路径=$path:/usr/local/mysql-xxxx

      导出dyld_library_path=/usr/local/mysql/lib/

      导出archflags='-arch x86_64'

    注意:

    1 in mysql-XXXX above, XXX is the specific version you downloaded. (Probably /usr/local/mysql/ would also work since this is most likely an alias to the same, but I won't pretend to know your setup)

    2 I have seen it suggested that ARCHFLAGS be set to '-arch i386 -arch x86_64' but specifying only x86_64 seemed to work better for me. (I can think of some reasons for this but they are not strictly relevant).

    • 安装野兽!

      易于安装mysql python

    • 最后一步:

    永久添加Dyld_库路径!

    您可以将其添加到您的bash_配置文件或类似文件中。这对我来说是一个缺失的步骤,如果没有这个步骤,我的系统会继续坚持各种错误查找,比如mysql.so等等。

    导出dyld_library_path=/usr/local/mysql/lib/

    @Richard Boardman,刚注意到你的软链接解决方案,它实际上可能和我的路径解决方案做的一样……伙计们,无论什么对你最有效。

    最佳参考文献:http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/


    或者简单的尝试:

    1
    > sudo easy_install MySQL-python

    如果出现如下错误:

    EnvironmentError: mysql_config not found

    ,然后运行这个

    1
    > export PATH=$PATH:/usr/local/mysql/bin

    您可以尝试使用纯python pymysql

    1
    sudo easy_install pymysql

    (或者如果安装了pip)然后,在代码中在import MySQLdb之前添加:

    1
    2
    3
    4
    5
    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except ImportError:
        pass

    在Macos Sierra上,这对我很有用,Python由Python管理:

    anaconda search -t conda mysql-python

    anaconda show CEFCA/mysql-python

    conda install --channel https://conda.anaconda.org/CEFCA mysql-python

    与SQLAlchemy一起使用的:

    Python 2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08)
    [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
    Type"help","copyright","credits" or"license" for more information.
    Anaconda is brought to you by Continuum Analytics.
    Please check out: http://continuum.io/thanks and https://anaconda.org

    >>> from sqlalchemy import *

    >>>dbengine = create_engine('mysql://....')


    1
    export PATH=$PATH:/usr/local/mysql/bin/

    应该为您解决这个问题,因为系统找不到mysql_配置文件。


    如果您使用的是64位mysql,那么在构建mysql python库的同时使用archflags来指定您的CPU体系结构就可以做到:

    1
    2
    ARCHFLAGS='-arch x86_64' python setup.py build
    ARCHFLAGS='-arch x86_64' python setup.py install