MySQLDB install Error:libmysqlclient_r.so.16: cannot open shared object

本文介绍了解决Python连接MySQL时因动态库搜索路径问题导致的错误。主要原因是MySQL安装路径未包含在默认搜索路径中。文章提供了修改配置文件并运行ldconfig命令的解决方案。

python连接MySql时出现的Error.

出现原因:

由于 /usr/local/lib/mysql 不在动态库默认搜索路径列表内,而mysql又装在此位置,生成的libmysqlclient_r.so.X 就不能被搜索到。


解决方案:

/usr/local/lib/mysql这个路径写进/etc/ld.so.conf.d/mysql.conf 然后再ldconfig下即可

echo "/usr/local/lib/mysql/ > /etc/ld.so.conf.d/mysql.conf ldconfig


关于/ld.so.conf.d 和 ldconfig

默认动态库搜索路径为/lib 和 /usr/lib , 和/etc/ld.so.conf.d内所包含的目录,然后通过ldconfig来产生ld.so所需的缓存文件,缓存文件默认在/etc/ld.so.cache文件内。此文件包含了已经排好序的动态库列表。

你可以使用ldconfig -p打印出当前cache所保存的所有共享库的名字。

^_^[root@:~]#ldconfig -p 1035 libs found in cache `/etc/ld.so.cache' libz.so.1 (libc6,x86-64) => /usr/lib64/libz.so.1 libz.so.1 (libc6) => /usr/lib/libz.so.1 libz.so (libc6,x86-64) => /usr/lib64/libz.so libz.so (libc6) => /usr/lib/libz.so libxslt.so.1 (libc6,x86-64) => /usr/lib64/libxslt.so.1 libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1 libxslt.so (libc6,x86-64) => /usr/lib64/libxslt.so libxml2.so.2 (libc6,x86-64) => /usr/lib64/libxml2.so.2 libxml2.so.2 (libc6) => /usr/lib/libxml2.so.2 libxml2.so (libc6,x86-64) => /usr/lib64/libxml2.so libxml2.so (libc6) => /usr/lib/libxml2.so libxmlsec1.so.1 (libc6,x86-64) => /usr/lib64/lib

通过 -v 参数显示扫描的动态库目录

^_^[root@:~]#ldconfig -v ldconfig: Path `/usr/lib' given more than once /usr/lib: libcupsimage.so.2 -> libcupsimage.so.2 libbdevid.so.5.1.19.6 -> libbdevi


(mg_env) ubuntu@ubuntu-64:~$ pip install mysqlclient Collecting mysqlclient Using cached mysqlclient-2.2.7.tar.gz (91 kB) Installing build dependencies ... done Getting requirements to build wheel ... 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 ╰─> [41 lines of output] Trying pkg-config --exists mysqlclient # Options for building extension module: extra_compile_args: ['-I/usr/include/mysql', '-std=c99'] extra_link_args: ['-lmysqlclient'] define_macros: [('version_info', (2, 2, 7, 'final', 0)), ('__version__', '2.2.7')] running bdist_wheel running build running build_py creating build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/__init__.py -> build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/times.py -> build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/_exceptions.py -> build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/converters.py -> build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/cursors.py -> build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/connections.py -> build/lib.linux-x86_64-cpython-38/MySQLdb copying src/MySQLdb/release.py -> build/lib.linux-x86_64-cpython-38/MySQLdb creating build/lib.linux-x86_64-cpython-38/MySQLdb/constants copying src/MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-cpython-38/MySQLdb/constants copying src/MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-cpython-38/MySQLdb/constants copying src/MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-cpython-38/MySQLdb/constants copying src/MySQLdb/constants/ER.py -> build/lib.linux-x86_64-cpython-38/MySQLdb/constants copying src/MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-cpython-38/MySQLdb/constants copying src/MySQLdb/constants/CR.py -> build/lib.linux-x86_64-cpython-38/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.linux-x86_64-cpython-38/MySQLdb running build_ext building 'MySQLdb._mysql' extension creating build/temp.linux-x86_64-cpython-38/src/MySQLdb x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC "-Dversion_info=(2, 2, 7, 'final', 0)" -D__version__=2.2.7 -I/home/ubuntu/.virtualenvs/mg_env/include -I/usr/include/python3.8 -c src/MySQLdb/_mysql.c -o build/temp.linux-x86_64-cpython-38/src/MySQLdb/_mysql.o -I/usr/include/mysql -std=c99 src/MySQLdb/_mysql.c:52:10: fatal error: Python.h: 没有那个文件或目录 52 | #include "Python.h" | ^~~~~~~~~~ compilation terminated. error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1 [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: Failed to build installable wheels for some pyproject.toml based projects (mysqlclient) 还是显示这个错误
最新发布
05-13
(django) [root@iZ7vhr6bkd1v9kZ django]# python manage.py runserver Watching for file changes with StatReloader Exception in thread django-main-thread: Traceback (most recent call last): File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 15, in <module> import MySQLdb as Database File "/root/.virtualenvs/django/lib/python3.8/site-packages/MySQLdb/__init__.py", line 17, in <module> from . import _mysql ImportError: libmysqlclient.so.20: cannot open shared object file: No such file or directory The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner self.run() File "/usr/local/lib/python3.8/threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/utils/autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run autoreload.raise_last_exception() File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/utils/autoreload.py", line 87, in raise_last_exception raise _exception[1] File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/core/management/__init__.py", line 394, in execute autoreload.check_errors(django.setup)() File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/utils/autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/apps/registry.py", line 116, in populate app_config.import_models() File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/apps/config.py", line 269, in import_models self.models_module = import_module(models_module_name) File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/db/models/base.py", line 371, in add_to_class value.contribute_to_class(cls, name) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/db/models/options.py", line 243, in contribute_to_class self.db_table, connection.ops.max_name_length() File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/utils/connection.py", line 15, in __getattr__ return getattr(self._connections[self._alias], item) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/utils/connection.py", line 62, in __getitem__ conn = self.create_connection(alias) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/db/utils.py", line 193, in create_connection backend = load_backend(db["ENGINE"]) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/db/utils.py", line 113, in load_backend return import_module("%s.base" % backend_name) File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/root/.virtualenvs/django/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 17, in <module> raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值