IT/Python

파이썬(Python) 32bit Django mysqlclient 설치 오류 해결 방법

조스톡 2024. 5. 2. 15:36
728x90
반응형

 

시스템을 새로 구성하는 과정에서 Python Django 을 설치해야 했다. Django 을 실행하는 데 필요한 라이브러리 중 'mysqlclient'를 설치하는데 아래와 같이 오류가 발생했다. ('mysql.h': No such file or directory)

 

mysqlclient 사이트 : https://pypi.org/project/mysqlclient/

 

Collecting mysqlclient
  Using cached mysqlclient-2.2.4.tar.gz (90 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 extension module:
        library_dirs: ['C:\\Program Files\\MySQL\\MySQL Server 8.0, C:\\Program Files\\MySQL\\Connector Python 8.0\\lib\\mariadb', 'C:\\Program Files\\MySQL\\MySQL Server 8.0, C:\\Program Files\\MySQL\\Connector Python 8.0\\lib']
        libraries: ['kernel32', 'advapi32', 'wsock32', 'shlwapi', 'Ws2_32', 'crypt32', 'secur32', 'bcrypt', 'mariadbclient']
        extra_link_args: ['/MANIFEST']
        include_dirs: ['C:\\Program Files\\MySQL\\MySQL Server 8.0, C:\\Program Files\\MySQL\\Connector Python 8.0\\include\\mariadb', 'C:\\Program Files\\MySQL\\MySQL Server 8.0, C:\\Program Files\\MySQL\\Connector Python 8.0\\include']
        extra_objects: []
        define_macros: [('version_info', (2, 2, 4, 'final', 0)), ('__version__', '2.2.4')]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win32-cpython-39
      creating build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\connections.py -> build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\converters.py -> build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\cursors.py -> build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\release.py -> build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\times.py -> build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\_exceptions.py -> build\lib.win32-cpython-39\MySQLdb
      copying src\MySQLdb\__init__.py -> build\lib.win32-cpython-39\MySQLdb
      creating build\lib.win32-cpython-39\MySQLdb\constants
      copying src\MySQLdb\constants\CLIENT.py -> build\lib.win32-cpython-39\MySQLdb\constants
      copying src\MySQLdb\constants\CR.py -> build\lib.win32-cpython-39\MySQLdb\constants
      copying src\MySQLdb\constants\ER.py -> build\lib.win32-cpython-39\MySQLdb\constants
      copying src\MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-cpython-39\MySQLdb\constants
      copying src\MySQLdb\constants\FLAG.py -> build\lib.win32-cpython-39\MySQLdb\constants
      copying src\MySQLdb\constants\__init__.py -> build\lib.win32-cpython-39\MySQLdb\constants
      running egg_info
      writing src\mysqlclient.egg-info\PKG-INFO
      writing dependency_links to src\mysqlclient.egg-info\dependency_links.txt
      writing top-level names to src\mysqlclient.egg-info\top_level.txt
      reading manifest file 'src\mysqlclient.egg-info\SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      adding license file 'LICENSE'
      writing manifest file 'src\mysqlclient.egg-info\SOURCES.txt'
      copying src\MySQLdb\_mysql.c -> build\lib.win32-cpython-39\MySQLdb
      running build_ext
      building 'MySQLdb._mysql' extension
      creating build\temp.win32-cpython-39
      creating build\temp.win32-cpython-39\Release
      creating build\temp.win32-cpython-39\Release\src
      creating build\temp.win32-cpython-39\Release\src\MySQLdb
      "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.39.33519\bin\HostX86\x86\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-Dversion_info=(2, 2, 4, 'final', 0)" -D__version__=2.2.4 "-IC:\Program Files\MySQL\MySQL Server 8.0, C:\Program Files\MySQL\Connector Python 8.0\include\mariadb" "-IC:\Program Files\MySQL\MySQL Server 8.0, C:\Program Files\MySQL\Connector Python 8.0\include" -IC:\Users\user\.conda\envs\py32\include -IC:\Users\user\.conda\envs\py32\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" /Tcsrc/MySQLdb/_mysql.c /Fobuild\temp.win32-cpython-39\Release\src/MySQLdb/_mysql.obj
      _mysql.c
      src/MySQLdb/_mysql.c(29): fatal error C1083: 포함 파일을 열 수 없습니다. '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\\x86\\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

 

 

라이브러리를 살펴보고 몇 차례 시도를 해본 결과, Python 64bit 환경에서는 설치가 정상적으로 진행되나 Python 32bit 환경에서는 설치가 안 됐다.

 

32bit 환경에서 mysqlclient을 설치하기 위해 방법을 찾아보니, 'pip install mysqlclient'로는 설치가 안 되고 'Christoph Gohlke'라는 분께서 캘리포니아 대학교 어바인 캠퍼스 사이트(https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient)에 별도로 업로드 해놓은 파일을 다운 받아서 설치하면 된다는 얘기가 있었다.

 

나는 이 방법으로 미리 파일을 가지고 있었으나 파이썬 버전 업데이트로 인해 기존 파일이 작동하지 않았고, 엎친 데 덮친 격으로 위 사이트 페이지가 사라져서 다운을 받을 수 없었다.

 

이후 여러 해결 방법으로 환경 변수 설정, MySQL Connector 설치 등 정말 많은 방법이 있어 시도했지만 해결되지 않았다.

 

심지어 중국 사이트에는 pymysql을 설치 후 Django 의 base.py 코드를 수정해 MySQLdb가 아닌 pymysql으로 대체하는 방법도 소개해 주었다. (이 방법은 작동하는지 확인해 보진 못했으나, 나중에 지금 방법으로 조차 해결되지 않으면 시도해 볼 만 할 듯하다.)

 

 

해결

 

아무튼 의지의 한국인, 편법(?)을 사용해 파일을 잘 구해왔다. 그러나 mysqlclient 32bit 버전이 파이썬 3.9 까지 밖에 지원하지 않기 때문에 이후엔 다른 방법을 찾을 수밖에 없을 듯하다.

 

설치는 파일이 위치한 폴더에 이동해서 'pip install 파일명'을 하면 설치가 완료된다.

 

 

mysqlclient-1.4.6-cp27-cp27m-win32.whl
0.92MB

 

mysqlclient-1.3.13-cp34-cp34m-win32.whl
1.17MB

 

mysqlclient-1.4.6-cp35-cp35m-win32.whl
1.18MB

 

mysqlclient-1.4.6-cp36-cp36m-win32.whl
1.18MB

 

mysqlclient-1.4.6-cp37-cp37m-win32.whl
1.18MB

 

mysqlclient-1.4.6-cp38-cp38-win32.whl
1.18MB

 

mysqlclient-1.4.6-cp39-cp39-win32.whl
1.18MB

 

 

 

728x90
반응형