如何在 Mac OS X 上安装 MySQLdb(MySQL 的 Python 数据访问库)?
- 2025-03-10 08:52:00
- admin 原创
- 83
问题描述:
如何让MySQLdb在 Mac OS X 上运行?
解决方案 1:
对于使用 Python3 的用户,更新:
您可以简单地使用conda install mysqlclient
来安装使用当前存在的 MySQLdb 所需的库。以下 SO 问题是一个有用的线索:Python 3 ImportError:没有名为“ConfigParser”的模块。安装 mysqlclient 将安装 mysqlclient、mysql-connector 和 llvmdev(至少,它在我的计算机上安装了这 3 个库)。
以下是我处理这个问题的漫无目的的经历。如果您对这个问题有更好的经验,我很乐意看到它被编辑或概括...应用一点 SO 魔法。
注意:下一段中的注释适用于 Snow Leopard,但不适用于 Lion,因为 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 下的 egg
步骤 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: 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
这在 Google 上相当容易找到,但是为了省去麻烦,您最终会来到这里(或者可能不会......不是一个特别面向未来的 URL)并弄清楚您需要cd ..
退出构建目录,错误就会消失。
正如我在顶部所写,我希望看到这个答案具有普遍性,因为还有很多其他关于这个可怕问题的具体经历。请随意编辑,或提供您自己的更好的答案。
解决方案 2:
适用于 Mac OS X 10.8 (Mountain Lion)、10.9 (Mavericks)、10.10 (Yosemite) 和10.11 (El Capitan)的快速简便方法:
我假设您已经安装了 XCode、它的命令行工具、Python 和 MySQL。
安装PIP:
sudo easy_install pip
编辑 ~/.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
安装 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
解决方案 3:
通过Macports安装 mysql 和 python搬运工已经完成了所有困难的工作。
sudo port install py26-mysql
sudo port install mysql5-server
应该安装您需要的内容。(有关 mysql 服务器的评论,请参阅 Stack overflow)
如果您只需要连接到 mysql 而不是运行服务器,那么第一行就足够了。
Macports 现在(2013 年初)将为操作系统和可执行架构的常见组合提供二进制下载,对于其他组合(如果您提出要求),它将从源代码构建。
一般来说,当需要安装复杂的库等时,macports(或 fink)会提供帮助。
仅限 Python 代码,并且可以通过 setuptools 等设置简单的 C 依赖项,但如果将两者混合在一起,它就会变得复杂。
解决方案 4:
安装 pip:
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 文件。
解决方案 5:
这是我在完成第 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
解决方案 6:
如在 Mac 上安装 MySQL-python所述:
pip uninstall MySQL-python
brew install mysql
pip install MySQL-python
然后测试一下:
python -c "import MySQLdb"
解决方案 7:
您可以尝试使用纯python pymysql
:
sudo easy_install pymysql
(或者使用pip
如果您已经安装它。)然后,import MySQLdb
在您的代码中添加它:
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
解决方案 8:
购买新的 Lion 盒子后,又遇到了这个问题!
我发现的最佳解决方案(仍不是 100% 最优,但有效):
确保您拥有 64 位 python。 如何检查在 Mac OS X 上构建的库是 32 位还是 64 位?
如果没有,请安装 easy_install。http ://packages.python.org/distribute/easy_install.html
如果没有,请安装 GCC。
你可以从 Apple 下载 XCode/Dev Tools 来获得它 - 这是一个很大的下载 -
...但我推荐这个 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 Community。(DMG 安装是一种简单的方法)http://dev.mysql.com/downloads/mysql/
设置路径如下:
导出 PATH=$PATH:/usr/local/mysql-XXXX
导出 DYLD_LIBRARY_PATH = /usr/local/mysql/lib/
导出 ARCHFLAGS='-arch x86_64'
注意:
1 在上面的 mysql-XXXX 中,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/
解决方案 9:
或者简单尝试:
> sudo easy_install MySQL-python
如果出现如下错误:
环境错误:未找到 mysql_config
,然后运行这个
> export PATH=$PATH:/usr/local/mysql/bin
解决方案 10:
此答案是大约 2019 年 11 月的更新。所有流行的 pip 安装都不会为您提供在 MacOS 10.13(以及其他版本)上可用的设置。这是我让事情正常工作的一种简单方法:
brew install mysql
pip install mysqlclient
如果您需要安装 brew 的帮助,请访问此网站:https://brew.sh/
解决方案 11:
如果您使用的是 64 位 MySQL,则在构建 mysql-python 库时使用 ARCHFLAGS 指定您的 CPU 架构即可:
ARCHFLAGS='-arch x86_64' python setup.py build
ARCHFLAGS='-arch x86_64' python setup.py install
解决方案 12:
export PATH=$PATH:/usr/local/mysql/bin/
应该可以为您解决问题,因为系统无法找到 mysql_config 文件。
解决方案 13:
在 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)[GCC 4.2.1 兼容 Apple LLVM 6.0 (clang-600.0.57)] 在 darwin 上输入“help”、“copyright”、“credits”或“license”以获取更多信息。Anaconda 由 Continuum Analytics 提供。请查看:http://continuum.io/thanks和https://anaconda.org
从 sqlalchemy 导入 *
dbengine = create_engine('mysql://....')
解决方案 14:
我遇到了这个问题,发现mysqlclient
需要知道在哪里找到 openssl,而 OSX 默认隐藏了它。
使用 找到 openssl brew info openssl
,然后将openssl
bin 的路径添加到您的 PATH:
export PATH="/usr/local/opt/openssl/bin:$PATH"
我建议将其添加到您的 .zshrc 或 .bashrc 中,这样您以后就不必担心它了。然后,导出该变量(这可能需要关闭并重新打开您的 bash 会话),再添加两个环境变量:
# 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
扫码咨询,免费领取项目管理大礼包!