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
Это сработало для меня:
исправить это в 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
Ответ 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 пытается перейти по символической ссылке.
Для решения проблемы я выполнил следующее:
-
brew uninstall mysql-connector-c
- загрузить/установить MacOS X MySQL Connector/C с сайта Oracle MySQL
- примечание: просто скачайте
.dmg
, здесь не нужно усложнять...
- перезапустите MacOS Terminal (или iTerm2) для хорошей меры
-
which mysql_config
- вы должны увидеть правильный путь
/usr/local/bin/mysql/bin/mysql_config
-
активировать virtualenv
(если применимо)
-
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 в определенных программах:
- Судо Чоун -R $ USER/Library/Python/2.7
- brew install [email protected]
- brew install mysql-connector-c
- ссылка для варки --overwrite [email protected]
- echo 'export PATH = "/usr/local/opt/[email protected]/bin: $ PATH"' >> ~/.bash_profile
- sed -i -e 's/libs = "$ libs -l"/libs = "$ libs -l mysqlclient -l ssl -l crypto"/g'/usr/local/bin/mysql_config
- pip install MySql-python
Это решило все проблемы, с которыми я столкнулся, запустив программу, которая работала на Python 2.7 и более старых версиях MySql