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

mbl*_*ll8 98 python mysql macos

我是一个Python新手,但我只花了一天时间研究如何使MySQLdb正常工作,并且谷歌根据谷歌提供了大量的参考资料,以及过多的指南似乎是过时.鉴于这个网站旨在解决这些问题,我知道将来我需要一个解决方案的参考,我会问这个问题,提供我的答案,看看还有什么浮动到表面.

那么问题是如何让MySQLdb在Mac OS X上运行?

mbl*_*ll8 131

使用Python3的用户的更新: 您可以简单地使用conda install mysqlclient安装使用当前存在的MySQLdb所需的库.以下SO问题是一个有用的线索:Python 3 ImportError:没有名为'ConfigParser'的模块.安装mysqlclient将安装mysqlclient,mysql-connector和llvmdev(至少,它在我的机器上安装了这3个库).

这是我对这个问题的漫无边际体验的故事.如果你对这个问题有更好的体验,我很乐意看到它被编辑或概括......应用一点那么神奇的魔法.

注意:下一段中的注释适用于Snow Leopard,但不适用于Lion,后者似乎需要64位MySQL

首先,MySQLdb的作者(仍然?)在这里说,最恶毒的问题之一是OS X安装了32位版本的Python,但大多数普通的joes(包括我自己)可能跳转到安装64位版本MySQL 不好动...删除64位版本,如果你已经安装了它(这个繁琐的任务指令适用于SO 这里),然后下载并(包安装32位版本在这里)

关于如何构建和安装MySQLdb库,有许多循序渐进的步骤.他们经常有微妙的差异. 似乎是我最受欢迎的,并提供了工作解决方案.我通过下面的几个编辑再现了它

第0步: 在开始之前,我假设你在mac上安装了MySQL,Python和GCC.

步骤1:从SourceForge 下载最新的MySQL for Python适配器.

第2步: 提取下载的包:

tar xzvf MySQL-python-1.2.2.tar.gz
Run Code Online (Sandbox Code Playgroud)

第3步: 在文件夹内,清理包:

sudo python setup.py clean
Run Code Online (Sandbox Code Playgroud)

额外步骤的偶像,(来自此评论)

步骤3b: 删除MySQL-python-1.2.2/build/*目录下的所有内容 - 不要相信"python setup.py clean"为你做这件事

步骤3c: 删除Users/$ USER/.python-eggs下的蛋

第4步: 最初需要编辑_mysql.c,但现在不再需要了.MySQLdb社区似乎现在修复了这个bug.

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

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Run Code Online (Sandbox Code Playgroud)

第6步: 编辑setup_posix.py并更改以下内容

mysql_config.path ="mysql_config"

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

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

sudo python setup.py build
Run Code Online (Sandbox Code Playgroud)

第8步: 安装包,你就完成了.

sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)

第9步: 测试它是否正常工作.如果您可以导入MySQLdb,它可以工作.

python
Run Code Online (Sandbox Code Playgroud)

>>> import MySQLdb

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

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)

然后你应该import MySQLdb没有任何错误.

最后一个打嗝是,如果从构建目录启动Python,您将收到此错误:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:模块_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),并计算出你需要cd ..从生成目录和错误应该消失.

正如我在顶部写的那样,我很乐意看到这个答案的概括,因为这个可怕的问题有很多其他特定的经验.编辑,或提供自己的,更好的答案.

  • 我还必须运行:`sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib/usr/lib/libmysqlclient.18.dylib` (8认同)
  • 原来我有mysql库,但只有链接不正确。Mac OS ElCapitan不允许链接到/ usr / lib。所以这对我来说足够了:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib (2认同)

F L*_*has 99

适用于Mac OS X 10.8(Mountain Lion),10.9(Mavericks),10.10(优胜美地)和10.11(El Capitan)的快捷方式:

我假设你已经安装了XCode,它的命令行工具,Python和MySQL.

  1. 安装PIP:

    sudo easy_install pip
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑〜/ .profile :( 可能在Mac OS X 10.10中没有必要)

    nano ~/.profile
    
    Run Code Online (Sandbox Code Playgroud)

    复制并粘贴以下两行

    export PATH=/usr/local/mysql/bin:$PATH
    export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
    
    Run Code Online (Sandbox Code Playgroud)

    保存并退出.后续执行以下命令:

    source  ~/.profile
    
    Run Code Online (Sandbox Code Playgroud)
  3. 安装MySQLdb

    sudo pip install MySQL-python
    
    Run Code Online (Sandbox Code Playgroud)

    要测试一切是否正常,请尝试

    python -c "import MySQLdb"
    
    Run Code Online (Sandbox Code Playgroud)

它对我来说就像一个魅力.我希望它有所帮助.

如果您遇到有关丢失库的错误:库未加载:libmysqlclient.18.dylib然后您必须将其符号链接,/usr/lib如下所示:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这个解决方案也适用于Mac OSX 10.9 :-) (2认同)
  • 这对我很有用(Yosemite public beta; Mysql 5; Py2.7),但是我需要做``sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib/usr/lib/libmysqlclient .18.dylib``命令来自下方. (2认同)

use*_*019 36

通过Macports安装mysql和python 搬运工已经完成了所有艰难的工作.

sudo port install py26-mysql 
sudo port install mysql5-server
Run Code Online (Sandbox Code Playgroud)

应该安装你需要的东西.(请参阅堆栈溢出以获取有关mysql服务器的评论)

如果你只需要连接到mysql而不是运行服务器那么第一行就足够了.

Macports现在(2013年初)将为可执行体系结构的OS的常见组合提供二进制下载,对于其他人(如果您请求它),它将从源代码构建.

通常,当需要安装复杂的库等时,macports(或fink)会提供帮助.

只有Python的代码,如果可以通过setuptools等设置简单的C依赖项,但如果你把它们混合起来就会变得复杂.

  • 是! 如果您只需要连接到现有的MySQL服务器,请跳过第二行.不幸的是,由于涉及的依赖项数量,尝试在OS X上使用python和mysql是一种情况,更容易让MacPorts安装额外的python实例而不是尝试自己玩包管理器. (4认同)
  • 仅供参考,如果您只是第一行(至少使用py27-mysql),它最终还是会安装mysql5.通过下载和编译源代码.可能不是你想要的.格儿. (4认同)
  • 请注意,在开始使用MacPorts时,请确保您的路径更喜欢/ opt/local/bin over/usr/bin,因为MacPorts会在/ opt/local下安装内容. (3认同)

Ron*_*ter 15

安装点子:

sudo easy_install pip
Run Code Online (Sandbox Code Playgroud)

安装brew:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Run Code Online (Sandbox Code Playgroud)

安装mysql:

brew install mysql
Run Code Online (Sandbox Code Playgroud)

安装MySQLdb

sudo pip install MySQL-python
Run Code Online (Sandbox Code Playgroud)

如果您有编译问题,请尝试编辑〜/ .profile文件,如下面的答案之一.


Ric*_*man 13

在收到完成步骤9的错误后,这是我必须经历的另一个步骤:

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
Run Code Online (Sandbox Code Playgroud)

参考:谢谢!http://ageekstory.blogspot.com/2011_04_01_archive.html


Tel*_*ias 9

在mac安装MySQL-python所述:

pip uninstall MySQL-python
brew install mysql
pip install MySQL-python
Run Code Online (Sandbox Code Playgroud)

然后测试一下:

python -c "import MySQLdb"
Run Code Online (Sandbox Code Playgroud)


Col*_*son 6

您可以尝试使用 pure-python pymysql

sudo easy_install pymysql
Run Code Online (Sandbox Code Playgroud)

(或者如果您已经安装了它,则使用它。)然后,在代码中的pip前面添加以下内容:import MySQLdb

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

184456 次

最近记录:

5 年,9 月 前