【问题标题】:Upgraded to Ubuntu 16.04 now MySQL-python dependencies are broken升级到 Ubuntu 16.04 现在 MySQL-python 依赖被破坏了
【发布时间】:2016-08-16 05:21:00
【问题描述】:

我刚刚将我的 Ubuntu 安装升级到 16.04,这似乎破坏了我在 MySQL-python 包中的 mysql 依赖项。

这是我的错误信息:

  File "/opt/monitorenv/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
return strategy.create(*args, **kwargs)
  File "/opt/monitorenv/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 75, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/opt/monitorenv/local/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 92, in dbapi
return __import__('MySQLdb')
  File "/opt/monitorenv/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

所以基本上 import_mysql 正在寻找一个不存在的 so 文件,因为在 Ubuntu 16.04 中,我安装了 libmysqlclient20。 并且 libmysqlclient18 不可用。 据我所知(或至少我相信)我的 python 库是最新版本的。

(我尝试运行pip install --upgrade mysql-python,这表明它是最新的)。

大家有什么建议吗?

【问题讨论】:

  • 从您的 requirements.txt 文件创建一个新的虚拟环境。如果您没有:pip freeze &gt; requirements.txt.
  • 我遇到和以前一样的错误,恐怕

标签: python mysql ubuntu pip ubuntu-16.04


【解决方案1】:

感谢拉加罗斯。如果您在 Ubuntu 16.04 上使用 mysqlclient 并出现错误: ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

你可以修复:

sudo -H pip uninstall mysqlclient

sudo -H pip install --no-binary mysqlclient mysqlclient

【讨论】:

  • "MySQL-python" 被报告为已安装,所以 this 答案是解决问题的答案。
  • 谢谢。这个和上面为我修复了它。
【解决方案2】:

我最终找到了解决 pip install --no-binary MySQL-python MySQL-python 问题的方法 如本帖所述:Python's MySQLdb can’t find libmysqlclient.dylib with Homebrewed MySQL

【讨论】:

  • 希望我能多次对此表示赞同。在过去的一周里,我多次遇到这个问题。不幸的是,答案并不容易找到。
  • 对于那些遇到no such option: --no-binary 错误的人:请务必先升级您的 pip 版本!
【解决方案3】:

我有同样的问题。我卸载并重新安装了 MySQL-python:

pip uninstall MySQL-python
pip install MySQL-python

【讨论】:

    【解决方案4】:

    我在更新到伸展时遇到了这个问题。为了修复它,我更新了我的 requirements.txt:

    mysqlclient==1.4.2.post1

    所以要么手动更新,要么 pip install --upgrade mysqlclient

    【讨论】:

    • 谢谢,这个(--upgrade 选项)解决了我从 ubuntu 19.04 升级到 19.10 后的问题
    【解决方案5】:

    我的问题是我使用的是旧操作系统的操舵室。

    当我卸载/安装软件包或更新操舵室时,问题已解决...

    来自文档:

    http://mysql-python.sourceforge.net/FAQ.html#importerror

    这意味着你有一个 MySQLdb 版本是针对一个 MySQL 版本编译的,现在正试图针对另一个版本运行它。共享库版本往往会在主要版本之间发生变化。

    解决方法:重建MySQLdb,或者获取对应版本的MySQL。

    【讨论】:

      【解决方案6】:

      步骤:

      1. 搜索mysql路径

        哪个mysql

        O/p : /opt/mysql/

      2. 创建指向 usr/lib 的符号链接

        sudo ln -s /opt/mysql/lib/mysqlclient.so.20 /usr/lib

      注意:mysqlclient.so.20 将根据您的版本

      【讨论】:

        【解决方案7】:

        我在使用 python 3.6 时遇到了这个问题...当我使用带有 Python 3.5 的环境时,它工作得很好。

        【讨论】:

          【解决方案8】:

          我使用 django 2.2.7 和 Ubuntu 19.10 在我的虚拟环境中解决了这个问题:

          pip3 卸载 mysqlclient

          pip3 安装 mysqlclient

          【讨论】:

            猜你喜欢
            • 2019-09-27
            • 2019-08-15
            • 1970-01-01
            • 2016-08-16
            • 2018-03-19
            • 2014-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多