【发布时间】:2014-04-28 02:47:51
【问题描述】:
我在 Ubuntu 主机上通过the source 新安装的 python-mysql-connector 1.1.6 在 Python 3.2.3 的 virtualenv 中在 Django 1.6 上运行 django-rest-framework。
当我运行 syncdb 并启动它时一切正常,但是当我到达任何不是根的 url 时,我从 python-mysql-connector 收到这个导入错误:
Exception Value:
cannot import name zip_longest
Exception Location: /usr/local/dev/python3.2.3/lib/python3.2/site-packages/mysql/connector/django/compiler.py in <module>, line 6
这是有问题的行:
from django.utils.six.moves import zip_longest
如果我激活我的 virtualenv python 二进制文件,我可以成功运行该导入语句。那么是什么给了?
>>>>from django.utils.six.moves import zip_longest
>>>>
这是我的 virtualenv 的 pip 列表输出,我计划在其中运行 Django 以验证我是否安装了所有正确的位:
(python3.2.3)thegooch@yrmomsapt:~/$ pip list
Django (1.6.2)
djangorestframework (2.3.13)
Markdown (2.4)
mysql-connector-python (1.1.6)
pip (1.5.4)
setuptools (2.2)
wsgiref (0.1.2)
【问题讨论】:
-
很抱歉不得不询问它是否已插入,但您确实将
python-mysql-connector安装到了您的 virtualenv 中,对吧? :) -
好问题,我将更新我的问题以反映它实际上已安装在我的 virtualenv 中。
-
会不会是什么东西导致了循环导入?
-
我不确定你的意思。您可以每天一整天都导入,除非您导入无效模块,否则不会抛出异常。我不认为它是循环的,因为 compiler.py 文件的第 6 行显然是在做出该声明,但是当您单独调用该导入时,它可以正常工作。
-
如果我在包目录中创建两个文件,
a.py和b.py,这样每个文件都只显示from a import f; def f(): pass(或from b...,无论我们不在其中),然后尝试运行它们,它给了我ImportError: cannot import name f。
标签: python mysql django python-3.x