Ошибка при установке mysql-python: библиотека не найдена для -lssl
У меня возникли проблемы с установкой mysql-python. Создал новый virtualenv и при установке mysql-python... вот сообщение об ошибке:
(env)$ pip install mysql-python
Collecting mysql-python
...
clang -bundle -undefined dynamic_lookup -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk build/temp.macosx-10.12-x86_64-2.7/_mysql.o -L/usr /local/Cellar/mysql/5.7.16/lib -lmysqlclient -lssl -lcrypto -o build/lib.macosx-10.12-x86_64-2.7/_mysql.so
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1
Используя homebrew, я установил:
Уже пытался brew link
, но brew отказывается это делать.
ОС - MacOS Sierra.
Может ли кто-нибудь помочь? Спасибо!
Ответы
Ответ 1
Решил это с помощью следующих шагов:
brew uninstall mysql
brew install mysql-connector-c
pip install mysql-python
brew unlink mysql-connector-c
brew install mysql
Нашел ответ здесь fooobar.com/questions/248891/...
Не уверен, что это правильный путь, но именно так мне удалось это решить.
Ответ 2
Вы можете явно указать путь библиотеки ssl.
LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
Ответ 3
Наконец, я смог исправить его
xcode-select --install
Я был уверен, что уже сделал это... но, очевидно, я этого не сделал. Определенно стоит сделать снимок!
Ответ 4
Я попытался обновить Xcode CLT, удалить mysql
, проверить mysql_config и т.д., Но безуспешно.
Я обнаружил, что запуск brew info openssl
показывает:
...
For compilers to find openssl you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
...
Выполнение этих двух команд с последующим pip install
сработало для меня (в моем случае при установке mysqlclient
).
Ответ 5
Я могу исправить ошибку, запустив:
pip install -r requirements.txt --global-option=build_ext --global-option="-I/usr/local/opt/openssl/include" --global-option="-L/usr/local/opt/openssl/lib"
Ответ 6
Работал для меня, делая это
$ brew uninstall mysql
$ brew install mysql-connector-c
$ brew unlink mysql-connector-c
$ brew install mysql
$ pip install mysql-python
Это немного измененная версия рецепта выше (примечание: pip install
в конце!)
Ответ 7
Если вы хотите установить mysql-python
, я предлагаю вам установить mysqlclient
. Авторы этих двух модулей одинаковы. Безусловно, авторы все продолжают поддерживать mysqlclient. mysqlclient
поддерживает как Python 2, так и Python 3. И вы можете использовать те же коды, что и mysql-python
. Blew - мое установочное решение для вас.
$ brew info openssl
$ brew unlink mysql-connector-c
$ brew install mysql
$ brew link --overwrite mysql-connector-c
$ pip install mysqlclient
Если перед pip install mysqlclient
есть ошибка. Пожалуйста, исправьте его в соответствии с metane answer.
И снова запустите pip install mysqlclient
.
Ответ 8
Или загрузите и установите .dmg с сайта dev dev: https://dev.mysql.com/downloads/file/?id=467834
Ответ 9
Для тех из вас, кто устанавливает MySQL v5.7 с Brew
Удалить mysql-connector-c
$ brew uninstall mysql-connector-c
Установите определенную версию, скорее всего, вам нужно удалить другие установленные версии
$ brew install [email protected]
Вам нужно будет добавить его в PATH
, поскольку это формулы "только для бочонков", они печатаются после установки
$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
Замените ~/.zshrc
соответствующим файлом.
Установить mysql-connector-c
$ brew install mysql-connector-c
Проверьте, правильно ли он установлен
$ which mysql
# /usr/local/opt/[email protected]/bin/mysql
$ mysql_config
# Usage: /usr/local/opt/[email protected]/bin/mysql_config [OPTIONS]
Compiler: Clang 10.0.0.10001145
Options:
--cflags [-I/usr/local/opt/[email protected]/include/mysql ]
--cxxflags [-I/usr/local/opt/[email protected]/include/mysql ]
--include [-I/usr/local/opt/[email protected]/include/mysql]
--libs [-L/usr/local/opt/[email protected]/lib -lmysqlclient -lssl -lcrypto]
--libs_r [-L/usr/local/opt/[email protected]/lib -lmysqlclient -lssl -lcrypto]
--plugindir [/usr/local/opt/[email protected]/lib/plugin]
--socket [/tmp/mysql.sock]
--port [0]
--version [5.7.24]
--libmysqld-libs [-L/usr/local/opt/[email protected]/lib -lmysqld -lssl -lcrypto]
--variable=VAR VAR is one of:
pkgincludedir [/usr/local/opt/[email protected]/include/mysql]
pkglibdir [/usr/local/opt/[email protected]/lib]
plugindir [/usr/local/opt/[email protected]/lib/plugin]
Теперь установите mysqlclient
$ pip install mysqlclient