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를 제공해야 합니다.
문제를 특정하기 위해 다음을 제안합니다.
- 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이 표시됩니다.
- 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
'programing' 카테고리의 다른 글
| PHP에서 2개의 어레이를 연결할 수 없습니다. (0) | 2023.01.16 |
|---|---|
| JavaScript에서 지정된 문자 앞에 있는 하위 문자열을 어떻게 잡습니까? (0) | 2023.01.16 |
| "RuntimeError: 반복 중 사전 크기 변경" 오류를 방지하는 방법 (0) | 2023.01.16 |
| xpath를 사용하는 css 클래스 선택 (0) | 2023.01.16 |
| InternetSetOption을 사용하여 자체 서명된 인증서를 무시하는 방법 (0) | 2023.01.16 |