升级到Ubuntu 16.04现在MySQL-python依赖性被打破了

时间:2016-04-22 14:13:38

标签: python mysql ubuntu pip ubuntu-16.04

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

你们有什么建议吗?

8 个答案:

答案 0 :(得分:32)

感谢Largaroth。如果您在Ubuntu 16.04上使用defmodule MyApp.UserHelpers do alias MyApp.User def full_name(%User{first_name: first_name, last_name: last_name, honorific_prefix: honorific_prefix, honorific_suffix: honorific_suffix}) do [honorific_prefix, first_name, last_name, honorific_suffix] |> Enum.reject(&(&1 == "")) |> Enum.join(" ") end end 并出现错误: mysqlclient

您可以修复:


ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

答案 1 :(得分:24)

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

答案 2 :(得分:5)

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

pip uninstall MySQL-python
pip install MySQL-python

答案 3 :(得分:1)

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

当我卸载/安装包或更新的驾驶室时,问题解决了......

来自docs:

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

  

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

     

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我在更新拉伸时遇到了这个问题。为了解决这个问题,我更新了我的requirements.txt:

mysqlclient == 1.4.2.post1

因此,手动更新或pip安装--upgrade mysqlclient

答案 6 :(得分:0)

我使用django 2.2.7和Ubuntu 19.10在虚拟环境中解决了此问题,

pip3卸载mysqlclient

pip3安装mysqlclient

答案 7 :(得分:0)

步骤:

  1. 搜索mysql路径

    哪个mysql

    O / p:/ opt / mysql /

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

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

注意:mysqlclient.so.20将与您的版本相同