pip install mysql-python fails with EnvironmentErr

2019-01-01 11:45发布

问题:

This is the error I get

(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File \"<string>\", line 14, in <module>
      File \"/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py\", line 15, in <module>
        metadata, options = get_config()
      File \"setup_posix.py\", line 43, in get_config
        libs = mysql_config(\"libs_r\")
      File \"setup_posix.py\", line 24, in mysql_config
        raise EnvironmentError(\"%s not found\" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File \"<string>\", line 14, in <module>

  File \"/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py\", line 15, in <module>

    metadata, options = get_config()

  File \"setup_posix.py\", line 43, in get_config

    libs = mysql_config(\"libs_r\")

  File \"setup_posix.py\", line 24, in mysql_config

    raise EnvironmentError(\"%s not found\" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log
(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File \"<string>\", line 14, in <module>
      File \"/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py\", line 15, in <module>
        metadata, options = get_config()
      File \"setup_posix.py\", line 43, in get_config
        libs = mysql_config(\"libs_r\")
      File \"setup_posix.py\", line 24, in mysql_config
        raise EnvironmentError(\"%s not found\" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File \"<string>\", line 14, in <module>

  File \"/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py\", line 15, in <module>

    metadata, options = get_config()

  File \"setup_posix.py\", line 43, in get_config

    libs = mysql_config(\"libs_r\")

  File \"setup_posix.py\", line 24, in mysql_config

    raise EnvironmentError(\"%s not found\" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log

What can I do to resolve this?

回答1:

It seems mysql_config is missing on your system or the installer could not find it. Be sure mysql_config is really installed.

For example on Debian/Ubuntu you must install the package:

sudo apt-get install libmysqlclient-dev

Maybe the mysql_config is not in your path, it will be the case when you compile by yourself the mysql suite.

Update: For recent versions of debian/ubuntu (as of 2018) it is

sudo apt install default-libmysqlclient-dev


回答2:

Running Mac OSX Mountain Lion, I simply ran this in terminal to fix:

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

This is the quickest fix I found - it adds it to the path, but I think you\'re better off adding it permanently (ie add it to /etc/paths) if you plan to install MySQL-python in another environment.



回答3:

apt-get install libmysqlclient-dev python-dev

Seemed to do the trick.



回答4:

There maybe various answers for the above issue, below is a aggregated solution.

For Ubuntu:

$ sudo apt update
$ sudo apt install python-dev
$ sudo apt install python-MySQLdb

For CentOS:

$ yum install python-devel mysql-devel


回答5:

You can use the MySQL Connector/Python

Installation via PyPip

pip install mysql-connector-python

Further information can be found on the MySQL Connector/Python 1.0.5 beta announcement blog.

On Launchpad there\'s a good example of how to add-, edit- or remove data with the library.



回答6:

For centos users:

yum install -y mysql-devel python-devel python-setuptools

then

pip install MySQL-python


If this solution doesn\'t work, and print gcc compile error like:
_mysql.c:29:20: error: Python.h: No such file or directory

You need to specify the path of Python.h, like this:
pip install --global-option=build_ext --global-option=\"-I/usr/include/python2.6\" MySQL-python



回答7:

If you are on MAC Install this globally

brew install mysql

then export path like this

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

lastly globally or in your venv

pip install MySQL-Python


回答8:

I was trying to install mysql-python on an Amazon EC2 Linux instance and I had to install these :

yum install mysql mysql-devel mysql-common mysql-libs gcc

But then I got this error :

_mysql.c:29:20: fatal error: Python.h: No such file or directory

So I installed :

yum install python-devel

And that did the trick.



回答9:

OSX Mavericks

Due to changes within osx mavericks & xcode development tools you may get the error on installation

clang: error: unknown argument: \'-mno-fused-madd\' [-Wunused-command-line-argument-hard-error-in-future]

therefore use :

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install mysql-python


回答10:

For anyone that is using MariaDB instead of MySQL, the solution is to install the libmariadbclient-dev package and create a symbolic link to the config file with the correct name.

For example this worked for me:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config


回答11:

Try sudo apt-get build-dep python-mysqldb



回答12:

for mariadb install libmariadbclient-dev instead of libmysqlclient-dev

sudo apt-get install libmariadbclient-dev


回答13:

sometimes the error depends on the actual cause. we had a case where mysql-python was installed through the python-mysqldb debian package.

a developer who didn\'t know this, accidentally ran pip uninstall mysql-python and then failed to recover with pip install mysql-python giving the above error.

pip uninstall mysql-python had destroyed the debian package contents, and of course pip install mysql-python failed because the debian package didn\'t need any dev files.

the correct solution in that case was apt-get install --reinstall python-mysqldb which restored mysql-python to its original state.



回答14:

You should install the mysql first:

yum install python-devel mysql-community-devel -y

Then you can install mysqlclient:

pip install  mysqlclient


回答15:

Had a similar issue trying to install on OS X Server 10.6.8. Here\'s what I had to do. Using:

MySQL-python 1.2.4b4 (source) MySQL-5.6.19 (binary installer) Python 2.7 (binary installer) NOTE: Installing in virtualenv...

Unzip source, open \'distribute_setup.py\' and edit DEFAULT_VERSION to use the latest version of distribute tools, like so:

DEFAULT_VERSION = \"0.6.49\"

Save. Open \'site.cfg\' file and uncomment the path to mysql_config so it looks something like (reference your own path to mysql_config):

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /usr/local/mysql/bin/mysql_config

Now clean, build and make will not fail with the \'mysql_config\' not found error. Hope this helps someone else trying to make use of their old xserves :-)



回答16:

Your sudo path does not know about your local path... go into superuser mode, add the path, and install it from there.

sudo su
export PATH=$PATH:/usr/local/mysql/bin/
pip install mysql-python
exit

And you\'re up and running on OSX. Now you have an updated global python.



回答17:

if you install MySQL-python in your virtual env, you should check the pip version, if the version is older than 9.0.1, please update it

pip install --upgrade pip


回答18:

I had the same problem in the Terraform:light container. It is based on Alpine.

There you have to install mariadb-dev with:

apk add mariadb-dev

But that one is not enough because also all the other dependencies are missed:

apk add python2 py2-pip gcc python2-dev musl-dev