尝试在Python 3.6.0上使用pip3安装mysqlclient
$ pip3 install mysqlclient
Collecting mysqlclient
Using cached mysqlclient-1.3.10.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup.py", line 17, in <module>
metadata, options = get_config()
File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 54, in get_config
libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 54, in <listcomp>
libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 12, in dequote
if s[0] in "\"'" and s[0] == s[-1]:
IndexError: string index out of range
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/
已经
brew install mysql-connector-c
但仍然收到此错误
答案 0 :(得分:35)
这对我有用:
brew install mysql-connector-c
修改mysql_config
(找到它:which mysql_config
)
在mysql_config中更正:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
它应该是:
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
brew info openssl
pip3 install mysqlclient
答案 1 :(得分:6)
我先解决了这个安装libmysqlclient-dev的问题:
for req in $(cat requirements.txt); do sudo pip3.5 install $req; done
希望它适合你。
答案 2 :(得分:5)
在广泛的问题排查后,我发现brew install mysql-connector-c
无效。
问题源于系统无法识别mysql_config
已安装(mysql-connector-c
本质上是什么)。 Homebrew的方法(打开参数)在mysql-connector-c
中安装/Cellar/
并创建符号链接到/usr/local/bin/
目录似乎导致问题,因为Python试图遵循符号链接。
要解决此问题,我执行了以下操作:
brew uninstall mysql-connector-c
.dmg
,这里不需要复杂...... which mysql_config
/usr/local/bin/mysql/bin/mysql_config
激活virtualenv
(如果适用)
pip install mysqlclient
可能还有其他方法可以使用Homebrew,但这是我找到的最简单的解决方案。
请注意,mysqlclient
GitHub README.md还声明需要Python3的C-developer头。我假设mysql-connector-c
包括那些;但是,如果您遇到更多问题,您也可以安装Xcode Developer CI工具。
xcode-select --install
它们包括C编译器和Apple的其他开发人员实用程序。阅读更多here。
答案 3 :(得分:1)
在开发基于django的网站时遇到这个问题,我需要设置网站与mysql数据库进行通信。我没有使用自制软件来完成任何安装。
由于我在安装了Anaconda的MacOS上进行开发,我发现Anaconda存在问题。在不知道细节的情况下,我能够使用conda install mysqlclient
希望能帮助其他人解决这个问题。
答案 4 :(得分:1)
对于特定程序上的Python 2.7:
这解决了我运行的程序在Python 2.7和较旧版本的MySql上运行的所有问题
答案 5 :(得分:0)
其他选项对我不起作用,但这对我有用:
对于Python3:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip3 install mysqlclient
对于Python2:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip2 install mysqlclient
或
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install mysqlclient
答案 6 :(得分:0)
我个人建议使用pymysql
而不是mysqlclient
。您可以使用以下方法安装pymysql
:
pip install pymysql
您还可以将SQLAlchemy URL编辑为:
mysql+pymysql://username:passwd@hostname/database
答案 7 :(得分:0)
我刚开始使用python,尝试做pip3 install mysqlclient
来将Django连接到MySQL 8.0.19时遇到了类似的问题,但就我而言,它在具有Python 3.8的macOS Catalina 10.15.5上。我也尝试过brew install mysql-connector-c
,但这也给我带来了很多麻烦。这就是我设法使其工作的方式。
brew reinstall mysql
brew install mysql-client
mysql-client
后,我在刚刚遵循的终端中收到以下消息,并使所有工作正常进行。echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/include"
pip3 install mysqlclient
参考:Install mysqlclient for Django Python on Mac OS X Sierra
希望它能像今天对我一样起作用。 问候, 阿尔弗雷多
答案 8 :(得分:0)
这在MacOS 10+上对我有用。 与其直接使用pip安装mysqlclient,不如先使用此命令
brew install mysql
如果您没有Brew的现有设置,请从其主页安装brew。
然后运行
pip install mysqlclient
这应该有效!另外,还要确保为项目设置了virtualenv,因为这是分别维护每个项目的venv的良好实践之一。