'pip install mariadb' states that it cannot find include file 'mysql.h' on my Windows 10 dekstop

56 Views Asked by At

I ran cmd.exe, as administrator, in my PC. Then typed: pip install mariadb, but this is the output it displayed:

Collecting mariadb
  Using cached mariadb-1.1.10.tar.gz (84 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting packaging (from mariadb)
  Using cached packaging-24.0-py3-none-any.whl.metadata (3.2 kB)
Using cached packaging-24.0-py3-none-any.whl (53 kB)
Building wheels for collected packages: mariadb
  Building wheel for mariadb (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for mariadb (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [37 lines of output]
      using environment configuration C:\path\to\mariadb-connector-c
      Found MariaDB Connector/C in 'C:\path\to\mariadb-connector-c'
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-313
      creating build\lib.win-amd64-cpython-313\mariadb
      copying mariadb\__init__.py -> build\lib.win-amd64-cpython-313\mariadb
      copying mariadb\connectionpool.py -> build\lib.win-amd64-cpython-313\mariadb
      copying mariadb\connections.py -> build\lib.win-amd64-cpython-313\mariadb
      creating build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\__init__.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\CAPABILITY.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\CLIENT.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\CURSOR.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\ERR.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\FIELD_FLAG.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\FIELD_TYPE.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\EXT_FIELD_TYPE.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\INDICATOR.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\INFO.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\STATUS.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\constants\TPC_STATE.py -> build\lib.win-amd64-cpython-313\mariadb\constants
      copying mariadb\cursors.py -> build\lib.win-amd64-cpython-313\mariadb
      copying mariadb\dbapi20.py -> build\lib.win-amd64-cpython-313\mariadb
      copying mariadb\field.py -> build\lib.win-amd64-cpython-313\mariadb
      copying mariadb\release_info.py -> build\lib.win-amd64-cpython-313\mariadb
      running build_ext
      building 'mariadb._mariadb' extension
      creating build\temp.win-amd64-cpython-313
      creating build\temp.win-amd64-cpython-313\Release
      creating build\temp.win-amd64-cpython-313\Release\mariadb
      "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.39.33519\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=1 -DPY_MARIADB_PATCH_VERSION=10 -DPY_MARIADB_PRE_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_PRE_RELEASE_NR=\"0\" -DPY_MARIADB_POST_RELEASE_SEGMENT=\"None\" -DPY_MARIADB_POST_RELEASE_NR=\"0\" -I.\include -IC:\path\to\mariadb-connector-c\include -IC:\path\to\mariadb-connector-c\include\mysql -IC:\Python313\include -IC:\Python313\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.39.33519\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcmariadb/mariadb.c /Fobuild\temp.win-amd64-cpython-313\Release\mariadb/mariadb.obj /MD
      mariadb.c
      .\include\mariadb_python.h(27): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
      error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.39.33519\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mariadb
Failed to build mariadb
ERROR: Could not build wheels for mariadb, which is required to install pyproject.toml-based projects

Why is this happening?

I updated my Visual C++ to the latest version, and my python version is 3.13, and pip is version 24.0 from C:\Python313\Lib\site-packages\pip.

Can someone please help me with this?

2

There are 2 best solutions below

1
pabludo8 On

You may be missing the MariaDB Connector/C libraries and header files. Head to the official download site and install everything listed in the prerequisites tab.

https://mariadb-corporation.github.io/mariadb-connector-python/install.html#build-prerequisites?

Then u should be good to go!

0
Georg Richter On

You're trying to install MariaDB Connector/C with Python 3.13 alpha (stable version expected in October 2024).

Pypi.org provides MariaDB Connector/C wheel packages for all non eoled stable versions, but not for development versions. For these versions it is required to install prerequisite MariaDB Connector/C. .

The error is raised, since you specified the environment variable MARIADB_CC_INSTALL_DIR (points to C:\path\to\mariadb-connector-c), but MariaDB Connector/C is not installed in this directory.

If MariaDB Connector/C was installed via MSI, MariaDB Connector/Python will automatically find it - if you installed it manually, then the preferred way is to change the path in site.cfg file.