最近我在我的环境(Windows 8.1)中安装了Python 3.4.3,并尝试部署一个简单的Django服务器。当我运行命令python manage.py runserver
但出现以下异常时:
.wrapper在0x031B5D68启动的线程中的未处理异常>
我相信当我尝试安装mysql-python
时,由于某些错误或误解而发生此异常。我更改了DATABASE
中的settings.py
配置来自" django.db.backends.mysql"到" django.db.backends.sqlite3"跑得很好。我试过的配置如下:
# Defective configuration
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'user',
'PASSWORD': 'doideira',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
但是使用SQLite有效:
# With SQLite 3 works
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
我遇到了一些麻烦,任何建议都会受到赞赏。我想知道为什么会这样,我该如何解决它。
更多信息:
可以看到完整的日志错误here。
更新 2015年5月16日星期六:
我提出了一个简单的解决方案:将Python从3.x降级到2.7.x.我将以下步骤解释为the answer of my question。我还发现this answer非常有用,但现在我使用Python 2.7一切正常。
我还发现这篇文章回答了问题" Should I use Python 2 or Python 3 for my development activity"这就是让我决定是继续使用Python3还是Python2的原因。由于Python3没有强大的库支持,我会等待一段时间再更新它。
答案 0 :(得分:1)
对于Python 3,我们需要安装mysqlclient和PyMySQL
答案 1 :(得分:1)
尤里卡!我找到了答案的人。
正如@nikhiln在评论中提到的,Python 3.x尚不支持mysql-python:
目前支持MySQL-3.23到5.5和Python-2.4到2.7。未来版本将支持Python-3.0。支持PyPy。 mysql-python 1.2.5
要解决这个问题,我将Python的版本从3.4降级到2.7.9,并安装了Microsoft Visual C++ Compiler for Python 2.7和Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)以正确运行它。
然后我使用Christoph Gohlke`s Unofficial Windows Binaries for Python Extension Packages中的 .whl 文件安装了mysql-python客户端。我做了如下(假设已经安装了C ++ 2008,Compiler for Python和Pip):
pip install wheel
安装滚轮程序。有了它,您就可以编译 .whl 文件。pip install MySQL_python‑1.2.5‑cp27‑none‑...whl
(您在上一步中下载的文件)。 Voilà! mysql-python现在正在快速运行!
要检查一切是否正常,只需将import MySQLdb
运行到Python shell中。
>>> import MySQLdb
如果没有引发异常,那么工作就完成了。