skip to Main Content

I am trying to connect mysql(which I have installed) to a Django project. I try to run pip install mysqlclient, but I keep receiving an error message.

I am using python 3.12 on Windows 64-bit. The full output is below:

pip install mysqlclient

Collecting mysqlclient
  Using cached mysqlclient-2.2.0.tar.gz (89 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: mysqlclient
  Building wheel for mysqlclient (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  **× Building wheel for mysqlclient (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [46 lines of output]**
      # Options for building extention module:
        library_dirs: ['C:/mariadb-connector\lib\mariadb', 'C:/mariadb-connector\lib']
        libraries: ['kernel32', 'advapi32', 'wsock32', 'shlwapi', 'Ws2_32', 'crypt32', 'secur32', 'bcrypt', 'mariadbclient']
        extra_link_args: ['/MANIFEST']
        include_dirs: ['C:/mariadb-connector\include\mariadb', 'C:/mariadb-connector\include']
        extra_objects: []
        define_macros: [('version_info', (2, 2, 0, 'final', 0)), ('__version__', '2.2.0')]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating buildlib.win-amd64-cpython-312
      creating buildlib.win-amd64-cpython-312MySQLdb
      copying srcMySQLdbconnections.py -> buildlib.win-amd64-cpython-312MySQLdb
      copying srcMySQLdbconverters.py -> buildlib.win-amd64-cpython-312MySQLdb 
      copying srcMySQLdbcursors.py -> buildlib.win-amd64-cpython-312MySQLdb    
      copying srcMySQLdbrelease.py -> buildlib.win-amd64-cpython-312MySQLdb    
      copying srcMySQLdbtimes.py -> buildlib.win-amd64-cpython-312MySQLdb      
      copying srcMySQLdb_exceptions.py -> buildlib.win-amd64-cpython-312MySQLdb
      copying srcMySQLdb__init__.py -> buildlib.win-amd64-cpython-312MySQLdb   
      creating buildlib.win-amd64-cpython-312MySQLdbconstants
      copying srcMySQLdbconstantsCLIENT.py -> buildlib.win-amd64-cpython-312MySQLdbconstants
      copying srcMySQLdbconstantsCR.py -> buildlib.win-amd64-cpython-312MySQLdbconstants
      copying srcMySQLdbconstantsER.py -> buildlib.win-amd64-cpython-312MySQLdbconstants
      copying srcMySQLdbconstantsFIELD_TYPE.py -> buildlib.win-amd64-cpython-312MySQLdbconstants
      copying srcMySQLdbconstantsFLAG.py -> buildlib.win-amd64-cpython-312MySQLdbconstants
      copying srcMySQLdbconstants__init__.py -> buildlib.win-amd64-cpython-312MySQLdbconstants
      running egg_info
      writing srcmysqlclient.egg-infoPKG-INFO
      writing dependency_links to srcmysqlclient.egg-infodependency_links.txt    
      writing top-level names to srcmysqlclient.egg-infotop_level.txt
      reading manifest file 'srcmysqlclient.egg-infoSOURCES.txt'
      reading manifest template 'MANIFEST.in'
      adding license file 'LICENSE'
      writing manifest file 'srcmysqlclient.egg-infoSOURCES.txt'
      copying srcMySQLdb_mysql.c -> buildlib.win-amd64-cpython-312MySQLdb      
      running build_ext
      building 'MySQLdb._mysql' extension
      creating buildtemp.win-amd64-cpython-312
      creating buildtemp.win-amd64-cpython-312Release
      creating buildtemp.win-amd64-cpython-312Releasesrc
      creating buildtemp.win-amd64-cpython-312ReleasesrcMySQLdb
      "C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCToolsMSVC14.38.33130binHostX86x64cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-Dversion_info=(2, 2, 0, 'final', 0)" -D__version__=2.2.0 -IC:/mariadb-connectorincludemariadb -IC:/mariadb-connectorinclude -IC:UsersTaylorAppDataLocalProgramsPythonPython312include -IC:UsersTaylorAppDataLocalProgramsPythonPython312Include "-IC:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCToolsMSVC14.38.33130include" "-IC:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCAuxiliaryVSinclude" "-IC:Program Files (x86)Windows Kits10include10.0.22621.0ucrt" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\um" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\shared" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\winrt" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\cppwinrt" /Tcsrc/MySQLdb/_mysql.c /Fobuildtemp.win-amd64-cpython-312Releasesrc/MySQLdb/_mysql.obj
      _mysql.c
      src/MySQLdb/_mysql.c(29): 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.38.33130\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 mysqlclient
Failed to build mysqlclient
ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects**

I tried to install older versions of python and install the mariadb connector but not sure if I even did those correctly.

2

Answers


  1. There are no Python 3.12 Windows binary wheels for mysqlclient yet. The latest one is mysqlclient-2.2.0-cp311-cp311-win_amd64.whl:

    https://pypi.org/project/mysqlclient/#files

    You should either downgrade your Python to 3.11, or try installing from source (as you did above):

    To build from source, download the MariaDB C Connector and install it. It must be installed in the default location (usually "C:Program FilesMariaDBMariaDB Connector C" or "C:Program Files (x86)MariaDBMariaDB Connector C" for 32-bit). If you build the connector yourself or install it in a different location, set the environment variable MYSQLCLIENT_CONNECTOR before installing.

    Note that building from source is not supported by the mysqlclient developers:

    Building mysqlclient on Windows is very hard. If binary wheels do not exist for your version of Python, it may be possible to build from source, but if this does not work, do not come asking for support.

    Login or Signup to reply.
  2. The mysqlclient package encounters installation challenges at times due to its dependency on C language compilation and the need for root access on servers.

    The mysql-connector-python library fits your description. It is a pure Python MySQL driver that doesn’t depend on MySQL C client libraries and follows the DB API v2.0 specification (PEP-249). This makes it a convenient choice for situations where you want a MySQL driver written entirely in Python without external dependencies.

    You can install it using pip:

     pip install mysql-connector-python
    

    https://pypi.org/project/mysql-connector-python/

    Once installed, you can use it in your Python scripts or Django projects to connect to MySQL databases.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search