programing

mariadb 모듈을 가져올 수 없습니다.

nicegoodjob 2023. 1. 16. 20:20
반응형

mariadb 모듈을 가져올 수 없습니다.

MacOS 11.2.2에서 python 3.9를 사용하고 있으며 설치된 mariadb(mariadb 10.5.9가 이미 설치되어 최신 버전)를 사용하고 싶습니다.

그러나 python은 module mariadb를 Import할 수 없으며 다음 오류가 발생합니다.

import mariadb  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mariadb/__init__.py", line 10, in <module>
    from ._mariadb import (
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mariadb/_mariadb.cpython-39-darwin.so, 2): Symbol not found: _mysql_ps_fetch_functions
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mariadb/_mariadb.cpython-39-darwin.so
  Expected in: flat namespace
 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mariadb/_mariadb.cpython-39-darwin.so

이 문제를 해결하도록 도와주세요.감사해요.

코멘트가 너무 길어서...

_bmariadb.cpython-39-darwin.so은 libmariadb.3.dylib에 대해 링크해야 하며, 후자는 내보낸 심볼 mysql_ps_syslog_syslog를 제공해야 합니다.

문제를 특정하기 위해 다음을 제안합니다.

  1. mariadb.cpython-39-darwin.so 가 Connector/C 에 링크 되어 있는 것을 확인합니다.

ldd /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/mariadb/_mariadb.cpython-39-darwin.solibmariadb.3.dylib이 표시됩니다.

  1. libmariadb.3.dylib의 위치를 확인하고 출력을 확인합니다.

nm libmariadb.3.dylib | grep mysql_ps_fetch_functions.

출력에 mysql_ps_fetch_functions api 콜이 표시되지 않으면 설치된 C/C 버전이 너무 오래되었거나 여러 C/C 인스턴스가 설치되어 있습니다.예를 들어 Homebrew는 최신 버전 3.1.12를 제공합니다.이 버전을 사용하려면 setup.py에서 최신 설치의 mariadb_config를 검색해야 합니다.

또는 소스로부터 C/C 및 C/Python을 구축할 수도 있습니다.

설치가 쉽지 않다는 것은 알지만, TLS 라이브러리와 같은 종속성이 너무 크기 때문에 Windows 이외의 플랫폼에 범용 바이너리를 제공하는 것은 제대로 작동하지 않습니다.

언급URL : https://stackoverflow.com/questions/66532800/cannot-import-module-mariadb

반응형