简体   繁体   中英

Mac pip install mysql-python unsuccessful

I installed MySQL and Workbench from website. I have a django project whose requirements.txt:

Django==1.11.12
djangorestframework==3.8.2
django-cors-headers==2.2.0
drfdocs==0.0.11
mysql-python==1.2.5
django-rest-auth==0.9.3
django-allauth==0.35.0
nltk==3.2.5
django-extensions==2.0.7
pyparsing==2.2.0
pydot==1.2.4

When I run

pip install -r requirements.txt

I got an error mysql_config not found . To solve this I ran

PATH=$PATH:/usr/local/mysql/bin

It now throws

    _mysql.c:44:10: fatal error: 'my_config.h' file not found
    #include "my_config.h"
             ^~~~~~~~~~~~~
    1 error generated.
    error: command 'cc' failed with exit status 1

    ----------------------------------------
Command ""/Users/nitish/gitProjects/Vision Backlog/vb_env/bin/python" -u -c "import setuptools, tokenize;__file__='/private/var/folders/ql/_w2_rlvs2351pdcnzhn04sf40000gn/T/pip-install-M4ue9E/mysql-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/ql/_w2_rlvs2351pdcnzhn04sf40000gn/T/pip-record-7OCzf1/install-record.txt --single-version-externally-managed --compile --install-headers "/Users/nitish/gitProjects/Vision Backlog/vb_env/include/site/python2.7/mysql-python"" failed with error code 1 in /private/var/folders/ql/_w2_rlvs2351pdcnzhn04sf40000gn/T/pip-install-M4ue9E/mysql-python/

Why is this happening?

UPDATE: following bellow solution threw:

Collecting MySQL-python
  Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/ql/_w2_rlvs2351pdcnzhn04sf40000gn/T/pip-install-X6b4rU/MySQL-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 53, in get_config
        libraries = [ dequote(i[2:]) for i in libs if i.startswith(compiler_flag("l")) ]
      File "setup_posix.py", line 8, in dequote
        if s[0] in "\"'" and s[0] == s[-1]:
    IndexError: string index out of range

Installing of an older version of the MySQL worked for me:

brew remove mysql
brew install mysql@5.7
brew link --force mysql@5.7
pip install mysql-python

See:

Please, try:

CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install -r requirements.txt

If it does not work: First install mysql-connector-c

brew install mysql-connector-c 
pip install MySQL-python

If you are using Windows:

https://dev.mysql.com/downloads/connector/c/

You can also check what happend when you try install it with pip3.

UPDATE: If you have Linux: Please open the /usr/local/bin/mysql_config .

And then:

#Create options
Libs = "-L $ pkglibdir "
Libs = " $ libs   -l"

replace with:

#Create options
Libs = "- L $ pkglibdir"
Libs = "$ libs -lmysqlclient -lssl -lcrypto"

Save it and reinstall mysql-python .

pip uninstall mysql-python
pip install mysql-python

For Mac:

LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysql-python

should be helpful.

brew install mysql@5.7
export PATH="/usr/local/Cellar/mysql@5.7/5.7.29/bin:$PATH"
export LDFLAGS="-L/usr/local/Cellar/mysql@5.7/5.7.29/lib -L/usr/local/Cellar/openssl@1.1/1.1.1d/lib"
export CPPFLAGS="-I/usr/local/Cellar/mysql@5.7/5.7.29/include -I/usr/local/Cellar/openssl@1.1/1.1.1d/include"
/Users/tivanli/source/bk_project/pizza/venv/bin/pip install MySQL-python==1.2.5

For me it was:

brew install mysql-connector-c 
pip install MySQL-python
pip install mysql-connector

Those who are facing this issue on Ubuntu even after installing all the required packages. They can follow this

  • Copy the Source for my_config.h from official url-

https://dev.mysql.com/doc/dev/mysql-server/8.0.11/my__config_8h_source.html

Then create a file in /usr/include/my_config.h and paste it

sudo nano /usr/include/my_config.h

you can paste the content using ctrl + shift + v, depending on your distribution.

Now install the package, your version or no version.

 pip install mysqlclient==1.3.7

You can get the source of the file from official link depending upon the SQL version.

Original Link - http://www.kombitz.com/2020/04/29/my_config-h-no-such-file-or-directory-on-centos-8/

Just uninstall your Mysql, and install MySql 5.7 and is fixed!!!!

If you are not successful from any of the above solutions, it means that your MySql version is not matching the requirements. i was thinking that it is because of Python or PyCharm, and i used virtualenv and conda but no luck, so when i compared my dependencies to one of my friend's computer, it was MySql version. downgraded to 5.7 and its working fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM