Mac OS X - EnvironmentError: 找不到 mysql_config
首先,是的,我已经看到这个问题了:
使用pip安装mysql-python时出现环境错误:找不到mysql_config
问题
我正在尝试在Google App Engine项目中使用Django。但是,我一直无法开始,因为服务器无法正常启动,原因是:
ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
我做了一些研究,发现问题似乎是因为我的系统上没有安装Mysql-python。我实际上尝试过卸载它,结果得到了这个:
Cannot uninstall requirement mysql-python, not installed
每当我尝试通过以下方式安装时:
sudo pip install MySQL-python
我都会收到一个错误提示:
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
我已经尝试运行:
export PATH=$PATH:/usr/local/mysql/bin
但这似乎没有帮助,因为我再次运行安装命令,它仍然失败了。
有什么想法吗?
请注意,我并不在虚拟环境中。
10 个回答
我在MacOS Catalina上运行Python 3.6。我的问题是我尝试安装mysqlclient==1.4.2.post1
时,总是出现找不到mysql_config的错误。
这是我解决这个问题的步骤。
- 使用brew安装mysql-connector-c(如果你已经安装了mysql,先执行
brew unlink mysql
来解除链接) -brew install mysql-connector-c
- 打开mysql_config文件,并在大约第112行进行编辑
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
- 运行
brew info openssl
- 这会给你更多关于如何将openssl放入PATH的信息 - 关于第3步,你需要这样做才能将openssl放入PATH -
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
- 为了让编译器找到openssl -
export LDFLAGS="-L/usr/local/opt/openssl/lib"
- 为了让编译器找到openssl -
export CPPFLAGS="-I/usr/local/opt/openssl/include"
如果你是通过Homebrew安装了指定版本的mysql,那么mysql_config文件会在这个地方找到:/usr/local/Cellar/mysql@5.6/5.6.47/bin
你可以通过在/usr/local/目录下使用ls命令来找到sql的路径。
/usr/local/Cellar/mysql@5.6/5.6.47/bin
像这样把路径添加到bash配置文件中。
nano ~/.bash_profile
export PATH="/usr/local/Cellar/mysql@5.6/5.6.47/bin:$PATH"
我花了很长时间调试这个问题,整整3小时17分钟。让我特别烦的是,我之前在大学的时候已经在系统上安装了sql,但pip/pip3却没有识别到它。我在网上找了很多相关的帖子,虽然它们对我理解问题有帮助,但并没有真正解决我的问题。
解决方案
Pip在寻找mysql的程序文件时,会在Homebrew目录下查找,而这个目录是相对于Macintosh HD的。
/usr/local/Cellar/
所以我发现需要做一些更改。
第一步:如果还没有下载MySql,请先去https://dev.mysql.com/downloads/下载。
第二步:找到它在Macintosh HD下的位置,然后进入该目录。
/usr/local/mysql/bin
第三步:到了那里后,打开终端,使用你喜欢的文本编辑器——我自己用的是neovim,所以我输入了(这个在Mac上默认是没有的……另说)。
nvim mysql_config
第四步:你大约在第112行会看到一些内容。
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
将其更改为:
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
*你会注意到这个文件是只读的,所以如果你使用vim或neovim的话……
:w !sudo tee %
第五步:前往主目录,编辑.bash_profile文件。
cd ~
然后
nvim .bash_profile
添加:
export PATH="/usr/local/mysql/bin:$PATH"
到文件中,然后保存。
第六步:相对于Macintosh HD找到路径并添加到其中。
cd /private/etc/
然后
nvim paths
添加:
/usr/local/mysql/bin
*你会再次注意到这个文件是只读的,所以如果你使用vim或neovim的话……
:w !sudo tee %
然后
cd ~
通过运行来刷新终端以应用你的更改:
source .bash_profile
最后
pip3 install mysqlclient
就这样。记得保持轻松的心态。
如果你不想安装完整的mysql数据库,我们可以通过只安装 mysql-client
来解决这个问题。
brew install mysql-client
当命令执行完后,它会提示你在 ~/.bash_profile
文件中添加下面这一行:
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
关闭终端,然后重新打开一个新的终端,接着继续执行 pip install mysqlclient
。
好的,首先让我确认一下我们是否在同一个频道上:
- 你安装了 Python
- 你执行了
brew install mysql
- 你执行了
export PATH=$PATH:/usr/local/mysql/bin
- 最后,你执行了
pip install MySQL-Python
(如果你用的是 Python 3,则是pip3 install mysqlclient
)
如果你按照这个顺序做了所有步骤,但仍然遇到错误,请继续往下看。如果你没有严格按照这些步骤来,建议你从头开始试一次。
那么,如果你按照步骤做了,但还是出错了,可以尝试以下几种方法:
在终端中运行
which mysql_config
。可能会显示找不到。这就是为什么构建时找不到它。你可以尝试运行locate mysql_config
,看看有没有返回结果。这个文件的路径需要在你的 shell 的 $PATH 环境变量中,或者在模块的 setup.py 文件中明确指定,假设它在某个特定位置查找这个文件。试试用 'mysql-connector-python' 替代 MySQL-Python,可以通过
pip install mysql-connector-python
安装。更多信息可以在 这里 和 这里 找到。手动找到 'mysql/bin'、'mysql_config' 和 'MySQL-Python' 的位置,并将它们都添加到 $PATH 环境变量中。
如果以上步骤都不行,可以尝试使用 MacPorts 安装 'mysql',在这种情况下,'mysql_config' 文件实际上会叫 'mysql_config5',你需要在安装后执行:
export PATH=$PATH:/opt/local/lib/mysql5/bin
。你可以在 这里 找到更多细节。
注意1:我见过一些人说安装 python-dev
和 libmysqlclient-dev
也有帮助,但我不知道这些包在 Mac OS 上是否可用。
注意2:另外,确保以 root 用户身份运行这些命令。
我从(除了我自己的脑袋)这些地方得到了答案(也许你可以看看,看看是否能帮到你): 1, 2, 3, 4。
希望这些信息对你有帮助,也很想知道这些方法是否有效。祝你好运。