2016-04-22 101 views
18

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

这是我的错误信息:

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

你们有什么建议吗?

+0

从requirements.txt文件中创建一个新的虚拟环境。如果你没有:'pip freeze> requirements.txt'。 –

+1

我得到了和以前一样的错误,恐怕 – RyanH

回答

22

我最终找到在此线程指出的解决我的问题pip install --no-binary MySQL-python MySQL-pythonPython's MySQLdb can’t find libmysqlclient.dylib with Homebrewed MySQL

+0

希望我可以不止一次地对此赞赏。在过去的一周里,我多次遇到这个问题。不幸的是,答案不太容易找到。 – Bono

+0

对于那些碰到'没有这样的选择:' - 无 - 二进制'错误:确保首先升级你的点的版本! – ShaneOH

+0

谢谢你。给予好评。 – Addinall

24

感谢Largaroth。如果您在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 
+0

这只适用于我。 –

+0

完美适用于'oursql',谢谢 – Olexandr

+1

“MySQL-python”被报告为已安装,所以*这个*答案是纠正问题的答案。 –

3

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

pip uninstall MySQL-python 
pip install MySQL-python 
1

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

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

从文档:

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

This means you have a version of MySQLdb compiled against one version of MySQL, and are now trying to run it against a different version. The shared library version tends to change between major releases.

Solution: Rebuilt MySQLdb, or get the matching version of MySQL.