5

I'm new to linux and VM's in general. Im currently trying to install mysqlclient on a clean Ubuntu Jammy 64 (22.4) vbox instance. The following commands are run beforehand:

    sudo add-apt-repository universe
    sudo apt-get install net-tools -y
    sudo apt-get install python3 -y
    sudo apt-get install python3-pip -y
    pip install pkgconfig
    sudo apt-get install pkg-config -y

When I try to run pip install mysqlclient I get the following error:

vagrant@Ctrl-A-EES:~$ pip install mysqlclient
Defaulting to user installation because normal site-packages is not writeable
Collecting mysqlclient
  Using cached mysqlclient-2.2.0.tar.gz (89 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [25 lines of output]
      Trying pkg-config --exists mysqlclient
      Command 'pkg-config --exists mysqlclient' returned non-zero exit status 1.
      Trying pkg-config --exists mariadb
      Command 'pkg-config --exists mariadb' returned non-zero exit status 1.
      Traceback (most recent call last):
        File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
          main()
        File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
          return self._get_build_requires(
        File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 143, in _get_build_requires
          self.run_setup()
        File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 158, in run_setup
          exec(compile(code, __file__, 'exec'), locals())
        File "setup.py", line 154, in <module>
          ext_options = get_config_posix(get_options())
        File "setup.py", line 48, in get_config_posix
          pkg_name = find_package_name()
        File "setup.py", line 27, in find_package_name
          raise Exception(
      Exception: Can not find valid pkg-config name.
      Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Any suggestions would help greatly! Thanks!

Expected install to resolve without issue. Tried to resolve pkg-config dependency, to no avail.

P.R
  • 141
  • 1
  • 5

4 Answers4

12

In my case sudo apt install pkg-config was enough to run pip install mysqlclient.

gil.fernandes
  • 12,978
  • 5
  • 63
  • 76
8

Solution from FlyingTeller:

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

Fixed the dependency.

P.R
  • 141
  • 1
  • 5
1

The error you are encountering while trying to install mysqlclient using pip3 is related to missing pkg-config and its inability to find the required dependencies for building the package.

pkg-config fails to find mysqlclient and mariadb libraries, which are needed to build the mysqlclient Python package.

Try these solutions:

  1. sudo apt-get update && sudo apt-get install python3-dev default-libmysqlclient-dev

If the above doesn't work:

  1. you can try installing the mysqlclient library by specifying the paths to the MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS environment variables manually, as suggested in the error message.

sudo MYSQLCLIENT_CFLAGS="-I/usr/include/mysql" MYSQLCLIENT_LDFLAGS="-L/usr/lib/x86_64-linux-gnu -lmysqlclient" pip3 install mysqlclient

NOTE: Replace /usr/include/mysql and /usr/lib/x86_64-linux-gnu with the correct paths to the mysqlclient headers and library files on your system if they are located elsewhere. The provided paths are common for Ubuntu-based systems.

tykoon
  • 11
  • 4
0

use this for Debian/Ubuntu

sudo apt-get update
sudo apt-get install gcc libmysqlclient-dev python3-dev

use this for Fedora:

sudo dnf install gcc mysql-devel python3-devel

then run again

pip install mysqlclient
Ezekudep
  • 1
  • 2