【问题标题】:Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or directory加载 MySQLdb 模块时出错:libmysqlclient.so.20:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2016-03-24 18:10:43
【问题描述】:

我有一个正在运行的 django 项目,由于某些原因,我不得不删除当前的 mysql 版本并在我的机器上安装不同的 MySQL 版本。

但是现在当我尝试运行这个程序时,出现如下错误:

raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or directory

【问题讨论】:

    标签: python mysql django


    【解决方案1】:

    重新安装c共享库:

    pip uninstall mysql-python
    pip install mysql-python
    

    【讨论】:

      【解决方案2】:

      使用以下命令:

      pip uninstall mysql-python
      pip install mysql-python
      

      在我的情况下它可以工作,因为它从编译的文件中搜索。

      【讨论】:

      • 请向询问更多信息和细节的用户提供您的答案
      【解决方案3】:

      我的问题是 mysql 环境没有完全设置好。我需要卸载 MySQL-python;安装 libmysqlclient-dev;重新安装 MySQL-python 解决问题。

      所以修复也是如此:

      • sudo pip uninstall MySQL-python(从您选择的包管理器中卸载)
      • sudo apt-get install libmysqlclient-dev

      • sudo pip install MySQL-python

      **我还应该提到,我在 pip install 中使用了 --no-cache-dir 选项来直接点击 PYPI,这有助于发现以下内容:

      sh: 1: mysql_config: not found
      Traceback (most recent call last):
        File "<string>", line 1, in <module>
        File "/tmp/pip-build-Y7RFpJ/mysql-python/setup.py", line 17, in <module>
          metadata, options = get_config()
        File "/tmp/pip-build-Y7RFpJ/mysql-python/setup_posix.py", line 43, in get_config
          libs = mysql_config("libs_r")
        File "/tmp/pip-build-Y7RFpJ/mysql-python/setup_posix.py", line 25, in mysql_config
          raise EnvironmentError("%s not found" % (mysql_config.path,))
      EnvironmentError: mysql_config not found
      

      然后带我去here

      使用:mysql 5.7、mysql-python 1.2.5、django 1.8.9、ubuntu 16.04

      【讨论】:

      • --no-cache-dir 选项的良好观察!
      【解决方案4】:

      我确实通过设置以下环境变量解决了同样的问题:

      export LD_LIBRARY_PATH=/usr/local/mysql/lib
      

      【讨论】:

      • 这对我有用!感谢详细说明如何找到我问 yum 的路径(在使用 ami linux 中),方法是使用:yum whatprovides "libmysqlclient" 从输出我可以找到包含 libmysqlclient.so 的库文件夹并将其添加到我的 bash_profile 导出 LD_LIBRARY_PATH=/usr/lib64/mysql57 上的 LB_LIBRARY_PATH
      【解决方案5】:

      以防万一 pip uninstallpip install 不起作用,并且您不想将特定路径设置为 ld_library_path,我在我的 vps 上做了什么:

      cd /usr/local/lib
      sudo ln -s /path/to/your/libmysqlclient.so.20
      

      在我的情况下,我的 mysql 是从 linuxbrew 安装的(有一些原因要安装在 home 内部),所以我不得不在那里导航 $HOME/.linuxbrew/Cellar/mysql/5.7.18/lib/libmysqlclient.so.20

      【讨论】:

        【解决方案6】:

        在我的情况下,问题是由 Ubuntu 升级引起的,所以我在 /usr/lib/x86_64-linux-gnu 中找不到 libmysqlclient.so.20

        解决方案:

        1. 检查libmysqlclient.so.XX 是否存在于/usr/lib/x86_64-linux-gnu(或类似)中
        2. 从 Ubuntu 网站下载libmysqlclient.so.XX(例如link for v20
        3. 使用 dpkg 命令安装 lib sudo dpkg -i libmysqlclient(...).debsudo apt-get install -f
        4. 链接库:ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.XX.so libmysqlclient.XX.so

        【讨论】:

        【解决方案7】:

        我遇到了同样的问题,我修复了 mysqlclient 官方 doc 之前所说的安装: sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

        【讨论】:

          猜你喜欢
          • 2012-05-18
          • 2015-06-07
          • 2019-02-16
          • 2015-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-08
          相关资源
          最近更新 更多