Python setup.py egg_info mysqlclient

Попытка установить mysqlclient с помощью pip3 на 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/

Уже сделал

brew install mysql-connector-c

Но все равно получение этой ошибки

Ответ 1

Это сработало для меня:

  • 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"
  1. brew info openssl
  2. и, наконец, pip3 install mysqlclient

Ответ 2

Я решил сначала установить libmysqlclient-dev:

sudo apt-get install libmysqlclient-dev

Надеюсь, что это сработает для вас.

Ответ 3

После обширного поиска неисправностей я обнаружил, что brew install mysql-connector-c просто не работает.

Проблема заключается в том, что система не может определить, установлен ли mysql_config (что по сути и делает mysql-connector-c). Доморощенный метод (открытый для аргумента) установки mysql-connector-c в его /Cellar/ и создания символической ссылки на каталог /usr/local/bin/ похоже, вызывает проблемы, так как Python пытается перейти по символической ссылке.

Для решения проблемы я выполнил следующее:

  1. brew uninstall mysql-connector-c
  2. загрузить/установить MacOS X MySQL Connector/C с сайта Oracle MySQL
    • примечание: просто скачайте .dmg, здесь не нужно усложнять...
  3. перезапустите MacOS Terminal (или iTerm2) для хорошей меры
  4. which mysql_config

    • вы должны увидеть правильный путь /usr/local/bin/mysql/bin/mysql_config
  5. активировать virtualenv (если применимо)

  6. pip install mysqlclient

Могут быть и другие способы использовать Homebrew, но это было самое простое решение, которое я нашел.

Обратите внимание, что mysqlclient GitHub README.md также утверждает, что необходимы заголовки C-разработчика для Python3. Я предполагаю, что mysql-connector-c включает их; однако, если вы столкнетесь с большим количеством проблем, вы можете также установить XI Developer CI Tools для хорошей меры.

xcode-select --install

Они включают в себя компилятор C и другие утилиты разработчика от Apple. Узнайте больше здесь.

Ответ 4

Столкнулся с этим при разработке сайта на основе django, и мне нужно было настроить сайт для связи с базой данных mysql. Я не использовал homebrew, чтобы делать какие-либо из моих установок.

Поскольку я занимаюсь разработкой для MacOS с установленной Anaconda, я обнаружил, что существует проблема с Anaconda. Не зная деталей, я смог установить mysqlclient с помощью conda install mysqlclient

Надеюсь, что это поможет кому-то еще с этой проблемой.

Ответ 5

Лично я рекомендую использовать pymysql вместо использования mysqlclient. Вы можете установить pymysql с помощью:

pip install pymysql

И вы можете изменить свой URL-адрес SQLAlchemy на:

mysql+pymysql://username:[email protected]/database

Ответ 6

Другие варианты не помогли мне, но это работало для меня:

Для 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

Ответ 7

Для Python 2.7 в определенных программах:

  1. Судо Чоун -R $ USER/Library/Python/2.7
  2. brew install [email protected]
  3. brew install mysql-connector-c
  4. ссылка для варки --overwrite [email protected]
  5. echo 'export PATH = "/usr/local/opt/[email protected]/bin: $ PATH"' >> ~/.bash_profile
  6. sed -i -e 's/libs = "$ libs -l"/libs = "$ libs -l mysqlclient -l ssl -l crypto"/g'/usr/local/bin/mysql_config
  7. pip install MySql-python

Это решило все проблемы, с которыми я столкнулся, запустив программу, которая работала на Python 2.7 и более старых версиях MySql