问题
I\'m having trouble installing mysql-python. Created a new virtualenv and when installing mysql-python... here\'s the error message:
(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
Using homebrew, I have installed:
- libressl
- openssl
- openssl@1.1
- mysql
Already tried to brew link
but brew refuses to do so.
The OS is MacOS Sierra.
Can anyone help? Thanks!
回答1:
You can set ssl library path explicitly.
LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
回答2:
Solved it with these steps:
brew uninstall mysql
brew install mysql-connector-c
pip install mysql-python
brew unlink mysql-connector-c
brew install mysql
Found the answer here https://stackoverflow.com/a/25920020/576192
Not sure if this is the right way, but this is how I managed to solve it.
回答3:
I tried updating Xcode's CLT, uninstalling mysql
, checking mysql_config, etc., but had no luck.
I found that running brew info openssl
shows:
...
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"
...
Running those two commands, followed by pip install
worked for me (in my case when installing mysqlclient
).
回答4:
I was finally able to fix it by
xcode-select --install
I was sure I had already done that... but obviously I hadn't. Definitely worth a shot!
回答5:
I'm able to fix the error by running:
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:
Worked for me by doing this
$ brew uninstall mysql
$ brew install mysql-connector-c
$ brew unlink mysql-connector-c
$ brew install mysql
$ pip install mysql-python
Which is a slightly altered version of the recipe above (note: pip install
at the end!)
回答7:
If you want to install mysql-python
, I suggest you to install mysqlclient
instead. The authors of these two modules are the same. By far, the authors all turn to keep maintaining mysqlclient. mysqlclient
supports both Python 2 and Python 3. And you can use the same codes like mysql-python
. Blew is my installation solution for you.
$ brew info openssl
$ brew unlink mysql-connector-c
$ brew install mysql
$ brew link --overwrite mysql-connector-c
$ pip install mysqlclient
If there is an error before pip install mysqlclient
. Please fix it according to methane's answer.
And run pip install mysqlclient
again.
回答8:
Or download and install .dmg from the MySQL dev site: https://dev.mysql.com/downloads/file/?id=467834
回答9:
For those of you who are installing MySQL v5.7 with Brew
Uninstall mysql-connector-c
$ brew uninstall mysql-connector-c
Install specific version, very likely you need to uninstall other installed versions
$ brew install mysql@5.7
You will need to add it to the PATH
, since this is 'keg-only' formulae, this is printed after it is installed
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
Replace ~/.zshrc
with the appropriate file.
Install mysql-connector-c
$ brew install mysql-connector-c
Check it is installed properly
$ which mysql
# /usr/local/opt/mysql@5.7/bin/mysql
$ mysql_config
# Usage: /usr/local/opt/mysql@5.7/bin/mysql_config [OPTIONS]
Compiler: Clang 10.0.0.10001145
Options:
--cflags [-I/usr/local/opt/mysql@5.7/include/mysql ]
--cxxflags [-I/usr/local/opt/mysql@5.7/include/mysql ]
--include [-I/usr/local/opt/mysql@5.7/include/mysql]
--libs [-L/usr/local/opt/mysql@5.7/lib -lmysqlclient -lssl -lcrypto]
--libs_r [-L/usr/local/opt/mysql@5.7/lib -lmysqlclient -lssl -lcrypto]
--plugindir [/usr/local/opt/mysql@5.7/lib/plugin]
--socket [/tmp/mysql.sock]
--port [0]
--version [5.7.24]
--libmysqld-libs [-L/usr/local/opt/mysql@5.7/lib -lmysqld -lssl -lcrypto]
--variable=VAR VAR is one of:
pkgincludedir [/usr/local/opt/mysql@5.7/include/mysql]
pkglibdir [/usr/local/opt/mysql@5.7/lib]
plugindir [/usr/local/opt/mysql@5.7/lib/plugin]
Now install mysqlclient
$ pip install mysqlclient
来源:https://stackoverflow.com/questions/40587558/error-installing-mysql-python-library-not-found-for-lssl