我刚刚将我的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
,表明它是最新的。)
你们有什么建议吗?
答案 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)
步骤:
搜索mysql路径
哪个mysql
O / p:/ opt / mysql /
创建指向usr / lib的符号链接
sudo ln -s /opt/mysql/lib/mysqlclient.so.20 / usr / lib
注意:mysqlclient.so.20将与您的版本相同