zoukankan      html  css  js  c++  java
  • 安装MySQLdb模块遭遇"fatal error: my_config.h: No such file or directory"的处理

    Issue
     
        I encountered an error when I run the python script which need to import the module of "MySQLdb".The error shows like this:
     
    [root@docker1 script]# python Xtrabackup.py
    Traceback (most recent call last):
      File "backup.py", line 11, in <module>
        import MySQLdb
    ImportError: No module named MySQLdb
     
        Then I downloaded and installed the latest version of pip to install MySQLdb module:
     
    [root@docker1 pip-18.0]# python setup.py install
    ...
    [root@docker1 pip-18.0]# pip --version
    pip 18.0 from /usr/lib/python2.7/site-packages/pip-18.0-py2.7.egg/pip (python 2.7)
     
        But it still doesn't work.it showed "fatal error: my_config.h: No such file or directory":
     
    [root@docker1 script]# easy_install pip
    Searching for pip
    Best match: pip 18.0
    Processing pip-18.0-py2.7.egg
    pip 18.0 is already the active version in easy-install.pth
    Installing pip script to /usr/bin
    Installing pip2.7 script to /usr/bin
    Installing pip2 script to /usr/bin
     
    Using /usr/lib/python2.7/site-packages/pip-18.0-py2.7.egg
    Processing dependencies for pip
    Finished processing dependencies for pip
    [root@docker1 script]# pip install mysql-python
    Collecting mysql-python
      Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python ... error
        Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-pm5hyO/mysql-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace(' ', ' ');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-GBdMPj/install-record.txt --single-version-externally-managed --compile:
        running install
        running build
        running build_py
        creating build
        creating build/lib.linux-x86_64-2.7
        copying _mysql_exceptions.py -> build/lib.linux-x86_64-2.7
        creating build/lib.linux-x86_64-2.7/MySQLdb
        copying MySQLdb/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb
        copying MySQLdb/converters.py -> build/lib.linux-x86_64-2.7/MySQLdb
        copying MySQLdb/connections.py -> build/lib.linux-x86_64-2.7/MySQLdb
        copying MySQLdb/cursors.py -> build/lib.linux-x86_64-2.7/MySQLdb
        copying MySQLdb/release.py -> build/lib.linux-x86_64-2.7/MySQLdb
        copying MySQLdb/times.py -> build/lib.linux-x86_64-2.7/MySQLdb
        creating build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants
        running build_ext
        building '_mysql' extension
        creating build/temp.linux-x86_64-2.7
        gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/local/mysql/include -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o
        _mysql.c:44:23: fatal error: my_config.h: No such file or directory
         #include "my_config.h"
                               ^
        compilation terminated.
        error: command 'gcc' failed with exit status 1
        
        ----------------------------------------
    Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-pm5hyO/mysql-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace(' ', ' ');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-GBdMPj/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-pm5hyO/mysql-python/
    [root@docker1 script]# 
     
        I even download the MySQL-python package without pip tool to install MySQLdb module,but it turned out to be the same error like using pip.
     
    [root@docker1script]# cd MySQL-python-1.2.5
    [root@docker1 MySQL-python-1.2.5]# ll
    total 171
    drwxrwxrwx 1 mysql mysql 4096 Sep 18 10:17 doc
    -rwxrwxrwx 1 mysql mysql 18092 Oct 8 2012 GPL-2.0
    -rwxrwxrwx 1 mysql mysql 5687 Jan 1 2013 HISTORY
    -rwxrwxrwx 1 mysql mysql 6636 Oct 8 2012 INSTALL
    -rwxrwxrwx 1 mysql mysql 309 Jan 2 2014 MANIFEST.in
    -rwxrwxrwx 1 mysql mysql 2039 Jan 2 2014 metadata.cfg
    -rwxrwxrwx 1 mysql mysql 84709 Jan 2 2014 _mysql.c
    drwxrwxrwx 1 mysql mysql 4096 Sep 18 10:17 MySQLdb
    -rwxrwxrwx 1 mysql mysql 2352 Oct 8 2012 _mysql_exceptions.py
    drwxrwxrwx 1 mysql mysql 4096 Sep 18 10:17 MySQL_python.egg-info
    -rwxrwxrwx 1 mysql mysql 1689 Jan 2 2014 PKG-INFO
    -rwxrwxrwx 1 mysql mysql 3203 Oct 8 2012 pymemcompat.h
    -rwxrwxrwx 1 mysql mysql 1266 Oct 4 2012 README.md
    -rwxrwxrwx 1 mysql mysql 398 Jan 2 2014 setup.cfg
    -rwxrwxrwx 1 mysql mysql 1088 Oct 8 2012 setup_common.py
    -rwxrwxrwx 1 mysql mysql 3392 Jan 2 2014 setup_posix.py
    -rwxrwxrwx 1 mysql mysql 609 Jan 2 2014 setup.py
    -rwxrwxrwx 1 mysql mysql 1334 Oct 8 2012 setup_windows.py
    -rwxrwxrwx 1 mysql mysql 665 Oct 8 2012 site.cfg
    drwxrwxrwx 1 mysql mysql 4096 Sep 18 10:17 tests
    [root@docker1 MySQL-python-1.2.5]# python setup.py install
    ...
    _mysql.c:44:23: fatal error: my_config.h: No such file or directory
     #include "my_config.h"
                           ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1
     
        After that,I search for a workaround in google,someone says that I need't to install mysql-devel package first:
     
    [root@docker1 MySQL-python-1.2.5]# yum install mysql-devel
    ...
    Error: mariadb101u-common conflicts with 1:mariadb-libs-5.5.60-1.el7_5.x86_64
    Error: mariadb101u-config conflicts with 1:mariadb-libs-5.5.60-1.el7_5.x86_64
    Error: mariadb101u-libs conflicts with 1:mariadb-libs-5.5.60-1.el7_5.x86_64
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest
     
        There were some confilcts with package mariadb-llibs when installing mysql-devel package.Then I have to erase it first:
     
    [root@docker1 MySQL-python-1.2.5]# rpm -e mariadb-libs
    error: Failed dependencies:
     libmysqlclient.so.18()(64bit) is needed by (installed) perl-DBD-MySQL-4.023-6.el7.x86_64
     libmysqlclient.so.18()(64bit) is needed by (installed) python27-MySQL-python-1.2.3-11.el7.x86_64
     libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) perl-DBD-MySQL-4.023-6.el7.x86_64
     libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) python27-MySQL-python-1.2.3-11.el7.x86_64
    [root@docker1 MySQL-python-1.2.5]# rpm -e --force mariadb-libs 
    rpm: only installation and upgrading may be forced
    rpm -e -Va --nofiles --nodigest mariadb-libs
    [root@docker1 MySQL-python-1.2.5]# rpm -e --nodeps mariadb-libs
    warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
     
        After I've erased the package of mariadb-lib,the my.cnf will be saved as my.cnf.rpmnew and my.cnf.rpmsave.The default my.cnf was missing.
     
    [root@docker1 etc]# ll|grep my
    -rw-r--r-- 1 mysql mysql 2540 Sep 17 10:05 my3306.cnf
    -rw-r--r-- 1 root root 570 Aug 16 22:00 my.cnf.rpmnew
    -rw-r--r-- 1 root root 83 Sep 12 13:34 my.cnf.rpmsave
    [root@docker1 etc]# cat my.cnf
    cat: my.cnf: No such file or directory
     
        And then the afterward installation was extremly successful.
     
    [root@docker1 MySQL-python-1.2.5]# yum install mysql-devel
    ...
    Installed:
      mariadb101u-devel.x86_64 1:10.1.32-1.ius.centos7                                                                                                   
     
    Dependency Installed:
      mariadb101u-common.x86_64 1:10.1.32-1.ius.centos7 mariadb101u-config.x86_64 1:10.1.32-1.ius.centos7                        
      mariadb101u-libs.x86_64 1:10.1.32-1.ius.centos7                          
     
    Complete!
    [root@docker1 MySQL-python-1.2.5]# pip install mysql-python
    Collecting mysql-python
      Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python ... done
    Successfully installed mysql-python-1.2.5
    [root@docker1 MySQL-python-1.2.5]#

     

  • 相关阅读:
    FSBQPIDMI总线的区别
    为什么PCI-e比SATA快这么多?
    chage命令管理用户口令时效
    账户管理groupadd groupmod groupdel usermod usermod userdel
    linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释
    RPM常见用法
    智力逻辑题
    Android ROM 制作教程
    智能家居项目(2):项目project框架的搭建
    5999卖999!是噱头还是颠覆
  • 原文地址:https://www.cnblogs.com/aaron8219/p/9668274.html
Copyright © 2011-2022 走看看