Essayer d'installer mysqlclient en utilisant pip3 sur Python 3.6.0
$ 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/
Déjà fait
brew install mysql-connector-c
Mais j'obtiens toujours cette erreur
Cela a fonctionné pour moi:
brew install mysql-connector-c
éditer mysql_config
(recherchez-le: which mysql_config
)
corrigez cela dans mysql_config:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
Ce devrait être:
# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
brew info openssl
pip3 install mysqlclient
J'ai d'abord résolu l'installation de libmysqlclient-dev:
Sudo apt-get install libmysqlclient-dev
J'espère que ça marche pour toi.
Après dépannage approfondi , j'ai constaté que le brew install mysql-connector-c
ne fonctionne tout simplement pas.
Le problème vient du fait que le système n'est pas en mesure d'identifier que mysql_config
est installé (c'est ce que mysql-connector-c
le fait essentiellement). La méthode de Homebrew (ouverte à l'argument) pour installer le mysql-connector-c
dans son /Cellar/
et en créant un lien symbolique vers le /usr/local/bin/
le répertoire semble causer des problèmes car Python essaie de suivre le lien symbolique.
Pour résoudre le problème, j'ai effectué les opérations suivantes:
brew uninstall mysql-connector-c
.dmg
, pas besoin d'être compliqué ici ...which mysql_config
/usr/local/bin/mysql/bin/mysql_config
activer virtualenv
(le cas échéant)
pip install mysqlclient
Il peut y avoir d'autres façons d'utiliser Homebrew, mais c'était la solution la plus simple que j'ai trouvée.
Notez que mysqlclient
GitHub README.md indique également que les en-têtes C-developer pour Python3 sont nécessaires. Je suppose que mysql-connector-c
comprend ceux-ci; cependant, si vous rencontrez plus de problèmes, vous pouvez également installer les outils Xcode Developer CI pour faire bonne mesure.
xcode-select --install
Ils incluent le compilateur C et d'autres utilitaires de développement d'Apple. En savoir plus ici .
Je suis tombé sur cela tout en développant un site Web basé sur Django, et j'avais besoin de configurer le site Web pour communiquer avec une base de données mysql. Je n'ai pas utilisé d'homebrew pour faire aucune de mes installations.
Depuis que je fais le développement sur un MacOS avec Anaconda installé, j'ai découvert qu'il y avait un problème avec Anaconda. Sans connaître les détails, j'ai pu installer mysqlclient avec conda install mysqlclient
J'espère que cela aide aussi quelqu'un d'autre avec ce problème.
D'autres options n'ont pas fonctionné pour moi, mais cela a fonctionné pour moi:
Pour Python3:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip3 install mysqlclient
Pour Python2:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip2 install mysqlclient
ou
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install mysqlclient