首页 > 解决方案 > 致命错误:mysql.h:安装mariadb时没有这样的文件或目录

问题描述

我一直在尝试安装mariadb==1.0.4,但每次都失败./include/mariadb_python.h:27:19: fatal error: mysql.h: No such file or directory

堆栈跟踪如下:

    Running setup.py install for mariadb ... error
    ERROR: Command errored out with exit status 1:
     command: /home/s/dbSync/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6v5t56ge/mariadb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6v5t56ge/mariadb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-ju1qda35/install-record.txt --single-version-externally-managed --compile --install-headers /home/s/dbSync/include/site/python3.7/mariadb
         cwd: /tmp/pip-install-6v5t56ge/mariadb/
    Complete output (23 lines):
    10.4.3
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.7
    creating build/lib.linux-x86_64-3.7/mariadb
    copying mariadb/__init__.py -> build/lib.linux-x86_64-3.7/mariadb
    creating build/lib.linux-x86_64-3.7/mariadb/constants
    copying mariadb/constants/__init__.py -> build/lib.linux-x86_64-3.7/mariadb/constants
    copying mariadb/constants/CLIENT.py -> build/lib.linux-x86_64-3.7/mariadb/constants
    copying mariadb/constants/INDICATOR.py -> build/lib.linux-x86_64-3.7/mariadb/constants
    copying mariadb/constants/CURSOR.py -> build/lib.linux-x86_64-3.7/mariadb/constants
    copying mariadb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.7/mariadb/constants
    running build_ext
    building 'mariadb._mariadb' extension
    creating build/temp.linux-x86_64-3.7
    creating build/temp.linux-x86_64-3.7/mariadb
    x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=0 -DPY_MARIADB_PATCH_VERSION=4 -I/usr/local/include/mariadb -I/usr/local/include/mariadb/mysql -I./include -I/home/s/dbSync/include -I/usr/include/python3.7m -c mariadb/mariadb.c -o build/temp.linux-x86_64-3.7/mariadb/mariadb.o -DDEFAULT_PLUGINS_SUBDIR="/usr/local/lib/mariadb/plugin"
    In file included from mariadb/mariadb.c:21:0:
    ./include/mariadb_python.h:27:19: fatal error: mysql.h: No such file or directory
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/s/dbSync/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6v5t56ge/mariadb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6v5t56ge/mariadb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-ju1qda35/install-record.txt --single-version-externally-managed --compile --install-headers /home/s/dbSync/include/site/python3.7/mariadb Check the logs for full command output.

当我这样做时,locate mysql.h我可以看到该文件存在于/usr/include/mysql/mysql.h

环境细节:

Running on Virtual env 
 pip3
 ubuntu 16.04
 Python 3.7.9
 x86_64

最初的假设是这与它有关,$PATH但即使添加/usr/include/它也不起作用。

pip3 冻结

certifi==2020.6.20
chardet==3.0.4
idna==2.10
mysqlclient==2.0.1
pypyodbc==1.3.4
requests==2.25.0
urllib3==1.26.2

libmysqlclient-dev已经是最新版本了。

标签: mysqlubuntupipmariadb

解决方案


您需要安装libmariadb-dev

sudo apt install libmariadb-dev

并重试安装mariadb包。


推荐阅读