web-dev-qa-db-fra.com

python setup.py Egg_info mysqlclient

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

16
Denis Ostrovsky

Cela a fonctionné pour moi:

  1. brew install mysql-connector-c

  2. é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"
  1. brew info openssl
  2. et enfin pip3 install mysqlclient
45
kvasnicaj

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.

8
yosbel

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:

  1. brew uninstall mysql-connector-c
  2. télécharger/installer MacOS X MySQL Connector/C à partir du site MySQL d'Oracle
    • note: il suffit de télécharger le .dmg, pas besoin d'être compliqué ici ...
  3. redémarrez MacOS Terminal (ou iTerm2) pour faire bonne mesure
  4. which mysql_config

    • vous devriez voir le chemin correct /usr/local/bin/mysql/bin/mysql_config
  5. activer virtualenv (le cas échéant)

  6. 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 .

5
Israel Flores

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.

1
andrewec

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

0
Sergei Kuznetcov