31

我刚刚将我的 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它表明它是最新的)。

你们有什么建议吗?

4

8 回答 8

45

感谢拉加罗斯。如果您mysqlclient在 Ubuntu 16.04 上使用并出现错误: 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
于 2016-05-03T07:21:24.647 回答
26

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

于 2016-04-25T08:17:17.593 回答
8

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

pip uninstall MySQL-python
pip install MySQL-python
于 2016-07-07T15:29:02.537 回答
2

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

mysqlclient==1.4.2.post1

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

于 2019-05-19T16:57:56.007 回答
1

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

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

来自文档:

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

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

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

于 2017-02-06T17:14:12.340 回答
1

脚步:

  1. 搜索mysql路径

    哪个mysql

    操作/ p:/opt/mysql/

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

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

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

于 2020-05-06T13:41:04.923 回答
0

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

pip3 卸载 mysqlclient

pip3 安装 mysqlclient

于 2020-01-07T12:42:28.200 回答
0

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

于 2018-11-06T17:18:40.700 回答