728x90
반응형
Meta 수업을 듣다가 mysql 을 사용해서 DB 를 연결해야하는 부분이 있었는데 pipenv 로 가볍게 설치해서 진행하면 되겠지 싶었다. 그런데 예상치 못한 에러가 계속해서 발생했다.
[pipenv.exceptions.InstallError]: Collecting mysqlclient==2.2.0 (from -r /var/folders/3t/xyg5mpbn57dchy7qksj9n2vr0000gn/T/pipenv-_macr11_-requirements/pipenv-hu_mma6k-hashed-reqs.txt (line 1))
[pipenv.exceptions.InstallError]: Using cached mysqlclient-2.2.0.tar.gz (89 kB)
[pipenv.exceptions.InstallError]: Installing build dependencies: started
[pipenv.exceptions.InstallError]: Installing build dependencies: finished with status 'done'
[pipenv.exceptions.InstallError]: Getting requirements to build wheel: started
[pipenv.exceptions.InstallError]: Getting requirements to build wheel: finished with status 'done'
[pipenv.exceptions.InstallError]: Installing backend dependencies: started
[pipenv.exceptions.InstallError]: Installing backend dependencies: finished with status 'done'
[pipenv.exceptions.InstallError]: Preparing metadata (pyproject.toml): started
[pipenv.exceptions.InstallError]: Preparing metadata (pyproject.toml): finished with status 'done'
[pipenv.exceptions.InstallError]: Building wheels for collected packages: mysqlclient
[pipenv.exceptions.InstallError]: Building wheel for mysqlclient (pyproject.toml): started
[pipenv.exceptions.InstallError]: Building wheel for mysqlclient (pyproject.toml): finished with status 'error'
[pipenv.exceptions.InstallError]: Failed to build mysqlclient
[pipenv.exceptions.InstallError]: error: subprocess-exited-with-error
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: × Building wheel for mysqlclient (pyproject.toml) did not run successfully.
[pipenv.exceptions.InstallError]: │ exit code: 1
[pipenv.exceptions.InstallError]: ╰─> [68 lines of output]
[pipenv.exceptions.InstallError]: Trying pkg-config --exists mysqlclient
[pipenv.exceptions.InstallError]: # Options for building extention module:
[pipenv.exceptions.InstallError]: extra_compile_args: ['-I/opt/homebrew/Cellar/mysql/8.1.0/include/mysql', '-std=c99']
[pipenv.exceptions.InstallError]: extra_link_args: ['-L/opt/homebrew/Cellar/mysql/8.1.0/lib', '-lmysqlclient']
[pipenv.exceptions.InstallError]: define_macros: [('version_info', (2, 2, 0, 'final', 0)), ('__version__', '2.2.0')]
[pipenv.exceptions.InstallError]: running bdist_wheel
[pipenv.exceptions.InstallError]: running build
[pipenv.exceptions.InstallError]: running build_py
[pipenv.exceptions.InstallError]: creating build
[pipenv.exceptions.InstallError]: creating build/lib.macosx-10.9-universal2-cpython-39
[pipenv.exceptions.InstallError]: creating build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/release.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/cursors.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/connections.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/__init__.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/times.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/converters.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: copying src/MySQLdb/_exceptions.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: creating build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: copying src/MySQLdb/constants/FLAG.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: copying src/MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: copying src/MySQLdb/constants/__init__.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: copying src/MySQLdb/constants/ER.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: copying src/MySQLdb/constants/CR.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: copying src/MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb/constants
[pipenv.exceptions.InstallError]: running egg_info
[pipenv.exceptions.InstallError]: writing src/mysqlclient.egg-info/PKG-INFO
[pipenv.exceptions.InstallError]: writing dependency_links to src/mysqlclient.egg-info/dependency_links.txt
[pipenv.exceptions.InstallError]: writing top-level names to src/mysqlclient.egg-info/top_level.txt
[pipenv.exceptions.InstallError]: reading manifest file 'src/mysqlclient.egg-info/SOURCES.txt'
[pipenv.exceptions.InstallError]: reading manifest template 'MANIFEST.in'
[pipenv.exceptions.InstallError]: adding license file 'LICENSE'
[pipenv.exceptions.InstallError]: writing manifest file 'src/mysqlclient.egg-info/SOURCES.txt'
[pipenv.exceptions.InstallError]: copying src/MySQLdb/_mysql.c -> build/lib.macosx-10.9-universal2-cpython-39/MySQLdb
[pipenv.exceptions.InstallError]: warning: build_py: byte-compiling is disabled, skipping.
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: running build_ext
[pipenv.exceptions.InstallError]: building 'MySQLdb._mysql' extension
[pipenv.exceptions.InstallError]: creating build/temp.macosx-10.9-universal2-cpython-39
[pipenv.exceptions.InstallError]: creating build/temp.macosx-10.9-universal2-cpython-39/src
[pipenv.exceptions.InstallError]: creating build/temp.macosx-10.9-universal2-cpython-39/src/MySQLdb
[pipenv.exceptions.InstallError]: clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -iwithsysroot/System/Library/Frameworks/System.framework/PrivateHeaders -iwithsysroot/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Headers -arch arm64 -arch x86_64 -Werror=implicit-function-declaration -Wno-error=unreachable-code -fsanitize=signed-integer-overflow -fsanitize=undefined -g -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -I/usr/local/opt/mysql@8.1.0/include "-Dversion_info=(2, 2, 0, 'final', 0)" -D__version__=2.2.0 -I/Users/kimminhyeok/.local/share/virtualenvs/little-K6ctkfG5/include -I/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Headers -c src/MySQLdb/_mysql.c -o build/temp.macosx-10.9-universal2-cpython-39/src/MySQLdb/_mysql.o -I/opt/homebrew/Cellar/mysql/8.1.0/include/mysql -std=c99
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2462:29: error: missing field 'ml_flags' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: {NULL, NULL} /* sentinel */
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2501:10: error: missing field 'type' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: {NULL} /* Sentinel */
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2547:29: error: missing field 'ml_flags' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: {NULL, NULL} /* sentinel */
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2565:10: error: missing field 'type' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: {NULL} /* Sentinel */
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2674:1: error: missing field 'tp_cache' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: } ;
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2742:1: error: missing field 'tp_cache' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: };
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2782:16: error: missing field 'ml_flags' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: {NULL, NULL} /* sentinel */
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: src/MySQLdb/_mysql.c:2824:1: error: missing field 'm_slots' initializer [-Werror,-Wmissing-field-initializers]
[pipenv.exceptions.InstallError]: };
[pipenv.exceptions.InstallError]: ^
[pipenv.exceptions.InstallError]: 8 errors generated.
[pipenv.exceptions.InstallError]: error: command '/usr/bin/clang' failed with exit code 1
[pipenv.exceptions.InstallError]: [end of output]
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: note: This error originates from a subprocess, and is likely not a problem with pip.
[pipenv.exceptions.InstallError]: ERROR: Failed building wheel for mysqlclient
[pipenv.exceptions.InstallError]: ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects
ERROR: Couldn't install package: {}
Package installation failed...
찾아보니 mysqlclient 패키지를 설치 하는 도중 오류가 발생했는데, MacOS 환경에서 C 컴파일러 설정과 관련된 문제로 보였다.
설정 참고
https://shandou.medium.com/pipenv-install-mysqlclient-on-macosx-7c253b0112f2
그래서 컴파일러에 전달되는 옵션들을 정의하는 CFLAGS (Compiler Flags) 와 링커가 사용할 라이브러리들을 지정하는 도구인 LIBS (Libraries) 의 설정을 변경해서 제대로 동작하게 해야한다.
해결 과정
# MySQL 또는 MariaDB 서버 설치 (Homebrew 사용)
brew install mysql
# mysql_config를 사용하여 필요한 플래그 확인
mysql_config --cflags
mysql_config --libs
export LDFLAGS="-L/usr/local/opt/mysql@<version>/lib"
export CPPFLAGS="-I/usr/local/opt/mysql@<version>/include"
여기서 version 은 실제 적용할 mysql 버전이 들어간다.
export CFLAGS="$(mysql_config --cflags)"
export LDFLAGS="$(mysql_config --libs)"
설정 변경 후,
(little) kimminhyeok@Ivans-Mac little % pipenv install mysqlclient
Installing mysqlclient...
Resolving mysqlclient...
Added mysqlclient to Pipfile's [packages] ...
✔ Installation Succeeded
Installing dependencies from Pipfile.lock (80f803)...
드디어.. 로컬에서 쓸 수 있게 되었다.
도커로만 돌리다가 로컬에서 하려니 참
728x90
반응형
'Dev. > Django & DRF' 카테고리의 다른 글
Django: select_related, prefetch_related, only & defer (0) | 2023.11.10 |
---|---|
Django: S3 호환 서비스 NCP object storage 에 이미지 저장 (1) | 2023.10.19 |
Django: ‘WSGIRequest' object has no attribute 'data' (0) | 2023.10.18 |
[Cloud] Django: Code develop for TEST2 (0) | 2023.08.31 |
Django : DRF 적용하기3 - Spectacular (0) | 2023.08.16 |
댓글