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


99

我是Python的新手,但是我只花了一天的时间来研究如何使MySQLdb正常工作,而根据Google的说法,Universe包含了许多有关PITA是什么的参考,并且似乎有大量的指南。过时的。鉴于此站点旨在解决此类问题,并且我知道将来需要该解决方案的参考,因此我将提出问题,提供答案并查看还有哪些问题表面。

所以问题是如何使MySQLdb在Mac OS X上运行?

Answers:


133

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

这是我关于这个问题的漫漫经历的故事。如果您对问题有更好的经验,不妨看一下它的编辑或概括...应用一下这种SO魔术。

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

首先,MySQLdb的作者(还是?)在这里说,最有害的问题之一是OS X附带了32位版本的Python,但是大多数普通人(包括我自己)都可能安装了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

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

sudo python setup.py clean

额外步骤,(来自此评论

步骤3b: 删除MySQL-python-1.2.2 / build / *目录下的所有内容-不要相信“ python setup.py clean”为您完成此操作

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

步骤4: 最初需要编辑_mysql.c,但现在不再需要。MySQLdb社区似乎已经修复了此错误。

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

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

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

mysql_config.path =“ mysql_config”

mysql_config.path =“ / usr / local / mysql / bin / mysql_config”

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

sudo python setup.py build

步骤8: 安装软件包,您已完成。

sudo python setup.py install

第9步: 测试它是否正常工作。如果可以导入MySQLdb,则可以使用。

python

>>> 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

然后,您应该能够import MySQLdb没有任何错误。

最后一个麻烦是,如果您从构建目录启动Python,则会出现此错误:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:用户警告:模块_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

这对Google来说很容易,但是要为您省去麻烦,您将最终在这里(或者可能不是……不是特别适合未来的URL),并发现您需要cd ..脱离构建目录,并且错误应该消失。

正如我在顶部写的那样,我很乐意看到这个答案具有普遍性,因为对于这个可怕的问题还有很多其他的具体经验。编辑掉,或者提供自己的更好的答案。


1
请注意,Apple提供的10.6(Snow Leopard)上的Python倾向于运行64位(32位/ 64位通用)。也有其他陷阱。在mysql 5.1.x系列中有一阵子,由mysql打包的OS X tarball出现了故障(声称是通用的,但不是)。Python的数据库适配器MySQLdb有其自身的问题。在这种情况下,建议您仅使用MacPorts自动构建所需的一切。发生问题太容易了。
Ned Deily

我将把它留在这里,以防它对其他人有帮助。我还必须修改site.cfg以将mysql_config设置为正确的路径。我认为它最初没有路径,因此默认为/ opt / ...,但是我需要将其指向/ usr / local / mysql / ...
tchaymore 2011年

8
我还必须跑步:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
David Underhill 2012年

1
我也正在Lion上运行,但是在使它工作时遇到了很多问题。我终于找到了这个很棒的SO问答,并100%地遵循了它。直到我添加了它,它对我才起作用,就像上面的David Underhill所指出的那样:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib。一旦我运行了它,它就按预期导入了……最后。Wheewwww。对于那些处于类似位置的人来说只是一个骗局。
约翰国王

2
原来我有mysql库,但只有链接不正确。Mac OS ElCapitan不允许链接到/ usr / lib。所以这对我来说足够了:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Maruthi

101

适用于Mac OS X 10.8(Mountain Lion),10.9(Mavericks),10.10(Yosemite)和10.11(El Capitan)的快速简便的方法:

我假设您已经安装了XCode,其命令行工具,Python和MySQL。

  1. 安装PIP:

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

    nano ~/.profile

    复制并粘贴以下两行

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

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

    source  ~/.profile
  3. 安装MySQLdb

    sudo pip install MySQL-python

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

    python -c "import MySQLdb"

对我来说,它就像是一种魅力。希望对您有所帮助。

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

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

2
谢谢您,此解决方案也可以在Mac OSX 10.9上使用:-)
matsoftware

2
这对我非常有用(Yosemite公共beta; Mysql 5; Py2.7),但是我需要sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib从下面开始执行命令。
Michael Scott Cuthbert 2014年

好答案。我的.bash_profile中已经有DYLD_LIBRARY_PATH的其他定义,因此我以这种方式添加了它export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
2014年

1
刚刚验证了此功能适用于10.10.4。另外,使用自制软件的mysql不需要更改.profile即可完成此工作。
Isotopp

1
使用安装MySQL之后brew install mysql,我不必执行第二步。
dav.garcia

36

通过Macports安装mysql和python 搬运工完成了所有困难的工作。

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

应该安装您需要的东西。(请参阅堆栈溢出以获取有关mysql服务器的注释

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

Macports现在(2013年初)将为操作系统的常见组合和可执行体系结构提供二进制下载,而对于其他操作系统(如果需要),它将从源代码构建。

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

仅使用Python的代码,如果可以通过setuptools等设置简单的C依赖关系,但是如果将两者混合使用,它就会变得复杂起来。


3
请注意,在开始使用MacPorts时,请确保您的路径首选/ opt / local / bin而不是/ usr / bin,因为MacPorts将东西安装在/ opt / local下。
Teemu Kurppa 09年

4
是! 如果只需要连接到现有的MySQL服务器,请跳过第二行。不幸的是,由于涉及的依赖项数量众多,在OS X上尝试将python与mysql一起使用是一种情况,即让MacPorts安装一个额外的python实例比尝试自己玩软件包管理器更容易。
Ned Deily

作为旁注,如果您收到弃用警告,则以下页面已修复:bugs.launchpad.net/python-mysqldb/+bug/341943
Jay Taylor 2010年

4
仅供参考,如果您只做第一行(至少使用py27-mysql),无论如何它最终都会安装mysql5。通过下载和编译源代码。可能不是您想要的。r
本·哈迪2012年

@BenHardy-它已安装完毕,这正是您想要的,并且恰好是我的意思-现在lion和Snow Leopard可执行文件都是由Macports集中构建的,因此在大多数情况下不会进行本地编译。
mmmmmm 2012年

15

安装点子:

sudo easy_install pip

安装brew:

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

安装mysql:

brew install mysql

安装MySQLdb

sudo pip install MySQL-python

如果您遇到编译问题,请尝试编辑〜/ .profile文件,如此处的答案之一所示。


谢谢!这适用于Sierra [OSX 10.12.6(16G29)]。
Haranadh

卷曲:(22)所请求的URL返回错误:404未找到
Thirupathi Thangavel

做到了,但是pip install mysqlclient相反。作品!
jeremysprofile

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

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



4

刚得到一个新的Lion盒之后,又遇到了这个问题(再次!)。

我发现的最佳解决方案(仍然不是100%最佳,但可以工作):

可以通过从Apple下载XCode / Dev工具获得它-这是一个很大的下载-

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

我下载了他们为狮子预装的PKG,https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • 确保您已下载64位版本的MYSQL社区。(DMG安装是一条简单的路线)http://dev.mysql.com/downloads/mysql/

  • 设置路径如下:

    导出PATH = $ PATH:/ usr / local / mysql-XXXX

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

    出口ARCHFLAGS ='-arch x86_64'

注意:

在上面的mysql-XXXX中为1,XXX是您下载的特定版本。(也许/ usr / local / mysql /也可以工作,因为这很可能是相同的别名,但是我不会假装知道您的设置)

2我已经看到它建议将ARCHFLAGS设置为'-arch i386 -arch x86_64',但是仅指定x86_64似乎对我来说更好。(我可以想到一些原因,但是它们并不严格相关)。

  • 安装野兽!

    easy_install MySQL-python

  • 最后一步:

永久添加DYLD_LIBRARY_PATH!

您可以将其添加到您的bash_profile或类似文件中。这是我所缺少的步骤,没有它,我的系统将继续坚持各种错误来查找_mysql.so等。

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

@ richard-boardman,刚注意到您的软链接解决方案,实际上可能是在执行我的PATH解决方案所做的相同工作……民间,无论哪种方法最适合您。

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


4

您可以尝试使用pure-python pymysql

sudo easy_install pymysql

(或者使用pip是否已安装。)然后,import MySQLdb在代码中添加以下代码:

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

3

或简单尝试:

> sudo easy_install MySQL-python

如果出现如下错误:

EnvironmentError:找不到mysql_config

,然后运行

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

0

如果您使用的是64位MySQL,则在构建mysql-python库时使用ARCHFLAGS指定您的cpu体系结构将达到目的:

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

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

应该会为您解决该问题,因为系统无法找到mysql_config文件。


0

在macos Sierra上,这对我有用,其中Python由anaconda管理:

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. | (默认值,2016年12月20日,23:05:08)darwin上的[GCC 4.2.1兼容Apple LLVM 6.0(clang-600.0.57)]有关更多信息,请键入“ help”,“ copyright”,“ credits”或“ license”信息。Anaconda由Continuum Analytics带给您。请检出:http : //continuum.io/thankshttps://anaconda.org

>>>从sqlalchemy导入*

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


0

这个答案是大约在2019年11月的更新。没有一个流行的pip安装程序可以在MacOS 10.13(以及其他版本)上为您提供有效的安装程序。这是使工作正常的一种简单方法:

brew install mysql
pip install mysqlclient

如果需要安装brew的帮助,请访问以下站点:https : //brew.sh/


0

我遇到了这个问题,发现mysqlclient需要知道在哪里可以找到openssl,而OSX默认将其隐藏。

使用找到“ openssl” brew info openssl,然后将opensslbin 的路径添加到PATH:

export PATH="/usr/local/opt/openssl/bin:$PATH"

我建议将其添加到您的.zshrc或.bashrc中,这样以后就不必担心了。然后,导出该变量(可能需要关闭并重新打开bash会话),再添加两个env变量:

# in terminal
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

然后,最后运行:

pipenv install mysqlclient

它应该安装得很好。

来源:https//medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.