新鲜的 python 3.7 / django 2.2.1 安装无法识别已安装 mysqlclient

     2023-02-25     273

关键词:

【中文标题】新鲜的 python 3.7 / django 2.2.1 安装无法识别已安装 mysqlclient【英文标题】:Fresh python 3.7 / django 2.2.1 installation not recognising that mysqlclient is installed 【发布时间】:2019-09-30 13:54:02 【问题描述】:

我有一个全新的 django 2.2.1 项目,我刚刚安装到 OS X (10.14.4) 上的 python 3.7 virtualenv 中。经过一些挫折后,我安装了 mysqlclient,但是当我运行 django dev 服务器时,它无法识别它已安装:

以下是我目前采取的步骤:

brew install mysql
pipenv --three
pipenv install django==2.2.1
pipenv install mysqlclient
brew uninstall mysql
brew install mysql-connector-c
pipenv install mysqlclient
brew unlink mysql-connector-c
brew install mysql
django-admin startproject projectname

现在,我对开箱即用的 django 安装所做的唯一更改是将默认数据库后端更改为 django.db.backends.mysql,当我运行 django 服务器时,我得到以下信息:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

但是,回到 virtualenv 并执行“pip install mysqlclient”会得到:

Requirement already satisfied: mysqlclient in /Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages (1.4.2.post1)

任何想法为什么 django 看不到安装在 virtualenv 中的 mysqlclient?我可以确认以上所有内容都已在 virtualenv 中运行。我怀疑这与 OSX 让您安装它时遇到的问题有关,但我不知道如何将它分开。

我也尝试过replace mysqldb with pymysql as suggested here,但这会导致服务器给出不同的错误:

raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

Mysql 是这个项目的一个给定的,所以使用替代后端不是一个选项。非常感谢您的任何帮助,非常感谢。

更新:pip freeze 的输出:

Django==2.2.1
django-auth-ldap==1.7.0
Markdown==3.1
mysql-connector-python==8.0.16
mysqlclient==1.4.2.post1
protobuf==3.7.1
pyasn1==0.4.5
pyasn1-modules==0.2.5
PyMySQL==0.9.3
pyodbc==4.0.26
python-ldap==3.2.0
pytz==2019.1
simplejson==3.16.0
six==1.12.0
sqlparse==0.3.0
xmltodict==0.12.0

更新 2: 在 conor 的帖子(感谢 conor)之后,我再次使用新的 virtualenv 开始,并再次成功安装了 mysqlclient1.4.2.post1。这是 pip freeze 现在的输出:

Django==2.2.1
mysqlclient==1.4.2.post1
pytz==2019.1
sqlparse==0.3.0

当我执行 python manage.py runserver 时仍然遇到同样的错误:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

更新 3: 以为我会尝试在 python 命令行上导入 MySQLdb 模块,看看我是否可以得到更多的见解,它会返回以下内容:

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
    from . import _mysql
ImportError: dlopen(/Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Symbol not found: _mysql_affected_rows
  Referenced from: /Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
  Expected in: flat namespace
 in /Users/<username>/.local/share/virtualenvs/<projectname>-KrUE_JNo/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so

【问题讨论】:

你能展示一下你是如何运行 Django 的吗? 嗨@GwynBleidD - 对不起,我应该考虑添加。我只是在做 ./manage.py runserver - 还是在 virtualenv 中 你的 virtualenv 的 pip freeze 的输出是什么? 点冻结输出(自发布问题以来我已经安装了一些不相关的软件包):Django==2.2.1 django-auth-ldap==1.7.0 Markdown==3.1 mysql-connector- python==8.0.16 mysqlclient==1.4.2.post1 protobuf==3.7.1 pyasn1==0.4.5 pyasn1-modules==0.2.5 PyMySQL==0.9.3 pyodbc==4.0.26 python-ldap= =3.2.0 pytz==2019.1 simplejson==3.16.0 六==1.12.0 sqlparse==0.3.0 xmltodict==0.12.0 安装这个版本的mysqlclient 1.3.13,因为错误消息提示,你有这个版本你有0.9.3。你读过邮件吗? 【参考方案1】:

已解决

所以看起来问题是在初始安装时 mysqlclient 库针对错误版本的 mysql 进行了编译(不知道这是怎么发生的),所以我不得不强制它重新编译。

步骤如下:

brew uninstall mysql
brew uninstall myysql-connector-c
pipenv uninstall mysqlclient
brew install mysql-connector-c

此时我们需要根据 conor 链接到的说明更新 /usr/local/bin/mysql_config(再次感谢 conor),即更改读取的行

libs="$libs -l "

libs="$libs -lmysqlclient -lssl -lcrypto "

那么,to fix the resultant "library not found for -lssl" error I used the answer from this question:

export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

然后最后强制mysqlclient重新编译重新安装mysql:

pip install --force-reinstall --ignore-installed --no-binary :all: mysqlclient
brew unlink mysql-connector-c
brew install mysql

感谢所有花时间提供帮助的人!

【讨论】:

【参考方案2】:

如果您使用的是 macos,请执行此操作

$ brew uninstall mysql
$ brew install mysql-connector-c
$ brew unlink mysql-connector-c
$ brew install mysql
$ pip install mysql-python

并按照此处的说明进行操作:https://pypi.org/project/mysqlclient/

【讨论】:

感谢 conor 但我认为 mysql-python 不适用于 python3?这就是为什么我改用 mysqlclient fork 的原因。在上述说明中将 mysqlclient 替换为 mysql-python 将允许我安装 mysqlclient 但问题不是在 virtualenv 中安装 mysqlclient 库,事实上 django 在它存在时似乎无法看到它。我浏览了这些说明,当我运行 manage.py reunserver 时,我仍然收到以下错误:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?【参考方案3】:

从 python 3.7.4 降级到 python 3.6 为我在 Windows 10 上解决了这个问题。

【讨论】:

1-django2.2安装指南(代码片段)

django快速安装指南作为一个PythonWeb框架,Django需要Python环境。下面是Django需要对应的python版本。Django版本python版本1.112.7,3.4,3.5,3.6,3.7(addedin1.11.17)2.03.4,3.5,3.6,3.72.13.5,3.6,3.72.23.5,3.6,3.7,3.8(addedin2.2.8)3.03.6,3.7,3.8下图是Django版本的官方维... 查看详情

Django 1.8 和 Rest Framework 3.7 的“导入错误:没有名为 urls 的模块”

...35【问题描述】:我正在使用django==1.8,rest_framework=3.7.7,python==2.7.12urls.pyurl 查看详情

如何为在 64 位 Amazon Linux 2 上运行的 Elastic Beanstalk Python 3.7 项目安装节点包?

】如何为在64位AmazonLinux2上运行的ElasticBeanstalkPython3.7项目安装节点包?【英文标题】:HowtoinstallNodePackagesforanElasticBeanstalkPython3.7ProjectRunningon64bitAmazonLinux2?【发布时间】:2021-11-0907:30:05【问题描述】:我正在使用一个名为django-pipe... 查看详情

django_background_tasks 是不是支持 django 3 和 python 3.7?

】django_background_tasks是不是支持django3和python3.7?【英文标题】:Doesdjango_background_taskssupportdjango3andpython3.7?django_background_tasks是否支持django3和python3.7?【发布时间】:2020-07-2014:07:30【问题描述】:app/tasks.pyfrombackground_taskimpo 查看详情

Python3.7 ImportError:没有名为“django”的模块

】Python3.7ImportError:没有名为“django”的模块【英文标题】:Python3.7ImportError:Nomodulenamed\'django\'【发布时间】:2020-09-0700:38:44【问题描述】:几天前,我决定将python从2.7版更新到3.7版。这是我目前的设置:Ubuntu16.04Python3.7.7Django3.0.... 查看详情

加载 MySQLdb 模块时出错 - Windows 上的 Python 3.7

】加载MySQLdb模块时出错-Windows上的Python3.7【英文标题】:ErrorloadingMySQLdbmodule-Python3.7onWindows【发布时间】:2021-01-2816:49:09【问题描述】:在Django中将数据库更改为mysql后,我无法迁移。我使用Django3.0.8、Python3.7,我已经安装了mysqlc... 查看详情

Python 3.7,MySql-Python 的构建轮失败

】Python3.7,MySql-Python的构建轮失败【英文标题】:Python3.7,FailedbuildingwheelforMySql-Python【发布时间】:2018-12-0913:54:33【问题描述】:我是python新手,我正在尝试涉及一些MySql的django框架,并在尝试执行pipinstallmysqlclient时遇到此错误... 查看详情

django(69)最好用的过滤器插件django-filter(代码片段)

...组件就是要解决这样的问题。 1.安装Django-filter支持的Python版本和Django版本、DRF版本如下:Python:3.5,3.6,3.7,3.8Django:1.11,2.0,2.1,2.2 查看详情

将 Python 2.7 ZIP 破解器“现代化”为 Python 3.7

】将Python2.7ZIP破解器“现代化”为Python3.7【英文标题】:\'Modernizing\'aPython2.7ZIPCrackertoPython3.7【发布时间】:2019-06-2207:43:09【问题描述】:我一直在尝试将TJO\'Connor用Python2.7编写的“ViolentPython”中的ZIPCracker代码“现代化”(我想... 查看详情

如何在 Django 中构建模型?

...【发布时间】:2021-04-2614:32:57【问题描述】:我正在使用Python(3.7)和Django(3)开发一个项目,我必须在其中创建一些模型来存储报告。有4种不同的模型来表示每种类型的报告,只有2个公共字段(RequestId、InstCode),但其余字段不同... 查看详情

在 venv 中将 Python 升级到 3.7? [复制]

】在venv中将Python升级到3.7?[复制]【英文标题】:UpgradingPythonto3.7insidevenv?[duplicate]【发布时间】:2019-04-0202:45:51【问题描述】:如何将venv中的当前Python解释器升级到v3.7.1。不幸的是,3.5.2对于我使用的一些库来说已经过时了,所... 查看详情

为 Python 3.7 virtualenv 安装 mod_wsgi

】为Python3.7virtualenv安装mod_wsgi【英文标题】:Installingmod_wsgiforPython3.7virtualenv【发布时间】:2019-01-1902:02:55【问题描述】:尝试为Python3.7安装mod_wsgi以完成Django的设置。但它失败并显示以下错误消息Collectingmod-wsgiUsingcachedhttps://files... 查看详情

如何将所有模块移动到新版本的 Python(从 3.6 到 3.7)

】如何将所有模块移动到新版本的Python(从3.6到3.7)【英文标题】:HowtomoveallmodulestonewversionofPython(from3.6to3.7)【发布时间】:2018-12-2020:44:51【问题描述】:我刚刚升级到python3.7,我意识到我所有的模块都停留在以前的版本上。甚... 查看详情

2.drf入门(代码片段)

...ps://www.django-rest-framework.orgDjangoRESTframework最新版使用要求:Python(3.6、3.7、3.8、3.9、3.10)Django(2.2、3.0、3.1、3. 查看详情

Python 3.7 - 安装 Scikit-Learn 的问题

】Python3.7-安装Scikit-Learn的问题【英文标题】:Python3.7-IssuesInstallingScikit-Learn【发布时间】:2019-02-0312:12:24【问题描述】:我目前在尝试在Linux-RHEL/Centos7OS上为Python3.7或2.7安装任何版本的ScikitLearn(0.19.0或0.19.1或0.19.2)时遇到以下... 查看详情

在 Keras 中使用 LSTM 预测股票(Python 3.7、Tensorflow 2.1.0)

】在Keras中使用LSTM预测股票(Python3.7、Tensorflow2.1.0)【英文标题】:ForecastingstockswithLSTMinKeras(Python3.7,Tensorflow2.1.0)【发布时间】:2020-10-1615:17:03【问题描述】:我正在尝试使用LSTM来预测道琼斯工业平均指数在未来几个月的表现。... 查看详情

升级到 Ubuntu 20.04 后,python 3.7 venv 损坏

】升级到Ubuntu20.04后,python3.7venv损坏【英文标题】:python3.7venvbrokenafterupgradetoUbuntu20.04【发布时间】:2020-08-1520:55:41【问题描述】:我刚刚升级到Ubuntu20.04。我在虚拟环境中使用Django处理python3.7项目,所以即使升级发行版(涉及... 查看详情

python测试开发django-169.过滤器django-filter入门使用(代码片段)

...PPS=[...'django_filters',]Django-filter已针对所有支持的Python和Django版本以及最新版本的DjangoRESTFramework(DRF)进行了测试。python:3.5、3.6、3.7、3.8django:2.2、3.0、3.1DRF:3.10+简单入门Django-filter提供了一种基于用户提供的参... 查看详情