加载MySQLdb模块时出错'你安装了mysqlclient还是MySQL-python?'

Pri*_*ter 27 python mysql django phpmyadmin

我正在使用Windows 10命令行使用python34进行django项目,但是,我遇到了SQL的困难.

我已经安装了mysqlclient使用pip install mysqlclient==1.3.5并找到了该文件,以确保我没有妄想.然后我跑去python manage.py migrate将表迁移到SQL数据库(我使用的是phpmyadmin).但是当命令返回时......

 File "C:\Users\user\env\lib\site-packages\django\db\backends\mysql\base.py", line 30, in <module>
    'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
Run Code Online (Sandbox Code Playgroud)

我知道这些问题已经存在,但是没有一个解决方案似乎对尝试产生了任何影响.先感谢您.

afo*_*rdz 118

pip install pymysql
Run Code Online (Sandbox Code Playgroud)

然后,编辑项目origin目录中的__init__.py文件(与settings.py相同)

加:

import pymysql

pymysql.install_as_MySQLdb()
Run Code Online (Sandbox Code Playgroud)

  • 错误:django.core.exceptions.ImproperlyConfigured:需要mysqlclient 1.3.13或更高版本;您有0.9.3。 (7认同)
  • 在django后端,它使用名为"MySQLdb"的模块作为mysql后端.在函数"install_as_MySQLdb()"中,你可以看到"sys.modules ["MySQLdb"] = sys.modules ["_ mysql"] = sys.modules ["pymysql"]"其中pymysql使自己指示"MySQLdb"所以django的作品 (5认同)
  • 尝试使用PyMySQL工作区时,出现与@ox相同的错误(PyMySQL的最新当前版本为0.9.3)。我安装了mysqlclient 1.4.2.post1,但是django和PyMySQL 0.9.3似乎没有,但是当我配置django而不是mysqlclient时,我得到了版本错误。 (4认同)
  • 我使用“mysqlclient”而不是“pymysql”,因为 **pymysql** 导致错误。 (3认同)
  • 嘿,谢谢,这对我有用,我在__init__.py的顶部添加了您的代码,我想知道为什么它需要这个:( (2认同)

als*_*str 10

如果您已经mysqlclient安装(即您看到Requirement already satisfied)并且正在获取Error loading MySQLdb Module,则以下内容对我有用:

  1. pip uninstall mysqlclient
  2. export LDFLAGS="-L/usr/local/opt/openssl/lib"正如这里export CPPFLAGS="-I/usr/local/opt/openssl/include"所解释的
  3. pip install mysqlclient

重新安装mysqlclient并以某种原因解决了我的问题。


Ani*_*nha 9

迁移到Python 3的后显然面对同样的问题时,MySQL-python的不兼容,所以按照官方的Django文档,安装的mysql使用pip install mysqlclientMac上。请注意,文档中提到了一些特定于操作系统的问题。

引用文档

先决条件

您可能需要像这样安装Python和MySQL开发标头和库:

sudo apt-get install python-dev default-libmysqlclient-dev #Debian / Ubuntu

sudo yum install python-devel mysql-devel #Red Hat / CentOS

brew install mysql-connector-c #macOS(自制程序)(当前有错误。请参见下文)

在Windows上,有一些二进制轮子可以在没有MySQLConnector / C或MSVC的情况下安装。

关于Python 3的注意事项:如果您使用的是python3,则需要使用以下命令安装python3-dev:

sudo apt-get install python3-dev #debian / Ubuntu

sudo yum install python3-devel #Red Hat / CentOS

关于macOS上的MySQL Connector / C错误的说明

另请参见:https : //bugs.mysql.com/bug.php?id=86971

MySQL Connector / C版本可能具有不正确的默认配置选项,导致在mysqlclient-python安装时导致编译错误。(截至2017年11月,这对于自制软件mysql-connector-c和官方软件包而言是正确的)

修改mysql_config解决这些问题的方法如下。

更改

# on macOS, on or about line 112:
# Create options
libs="-L$pkglibdir"
libs="$libs -l "
Run Code Online (Sandbox Code Playgroud)

# Create options
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
Run Code Online (Sandbox Code Playgroud)

ssl配置不正确也可能会导致问题。参见例如brew info openssl有关macOS的详细信息。

从PyPI安装

pip install mysqlclient

注意:Windows的Wheels可能不会与源包一起发布。您应该在版本中添加版本,requirements.txt以避免尝试安装最新的源程序包。

从源安装

  1. 通过git clonezipfile下载源。
  2. 定制 site.cfg
  3. python setup.py install

  • 这有效。对于使用 Ubuntu 的我来说,只需 `sudo apt-get install python-dev default-libmysqlclient-dev` 然后 `sudo apt-get install python3-dev` 然后 `pip install --force-reinstall --ignore-installed --no -binary :all: mysqlclient` 它可以工作。 (3认同)

小智 9

对于点

pip install pymysql
Run Code Online (Sandbox Code Playgroud)

对于 pip3,您应该使用

python3 -m pip install PyMySQL
Run Code Online (Sandbox Code Playgroud)

然后,编辑项目原始目录中的 init.py 文件(与 settings.py 相同)。添加:

import pymysql

pymysql.install_as_MySQLdb()
Run Code Online (Sandbox Code Playgroud)


Wal*_*alk 9

这个命令完成了@Aniket Sinha 上面的回答:

pip install mysqlclient

  • 在此之前我需要运行“sudo apt-get install libmysqlclient-dev python-dev”才能使其正常工作。 (4认同)

小智 6

使用以下命令解决您的问题,

pip install mysql-python
apt-get install python3-mysqldb libmysqlclient-dev python-dev
Run Code Online (Sandbox Code Playgroud)

适用于Debian

  • 无用的评论.`MySQL-python` lib不支持Python 3.x,`mysqlclient`应该是py3和py2的正确替换,但是,不幸的是,当mysqlclient已经存在时,你有时会从Django得到`你安装了mysqlclient吗?`安装.这是实际问题. (11认同)

归档时间:

查看次数:

66456 次

最近记录:

5 年,10 月 前