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

2025-03-10 08:52:00
admin
原创
84
摘要:问题描述:如何让MySQLdb在 Mac OS X 上运行?解决方案 1:对于使用 Python3 的用户,更新:您可以简单地使用conda install mysqlclient来安装使用当前存在的 MySQLdb 所需的库。以下 SO 问题是一个有用的线索:Python 3 ImportError:没有名...

问题描述:

如何让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。

  1. 安装PIP:

sudo easy_install pip
  1. 编辑 ~/.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
  1. 安装 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

导出 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/thankshttps://anaconda.org

从 sqlalchemy 导入 *

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

解决方案 14:

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

使用 找到 openssl brew info openssl,然后将opensslbin 的路径添加到您的 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

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3998  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2749  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   85  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   96  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   83  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用