2

我有一个 django 1.4 安装并且我有 django-cms 运行。我正在尝试安装文件管理器,但是当我 syncdb 或 runserver 时,我一直有这个错误。

 from filer.models import mixins
 ImportError: cannot import name mixins

在我的 setting.py 中,我有:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
'cms', 
'mptt',
'menus', 
'south',
'sekizai', 
'ftlom',
#'cms.plugins.text',
#'cms.plugins.picture',
'cmsplugin_twitter',
'easy_thumbnails',
'filer',
#'ordered_model',
#'cmsplugin_filer_file',
#'cmsplugin_filer_folder',
'cmsplugin_filer_image',
#'cmsplugin_gallery',
'cms.plugins.video',
#'gunicorn',


# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',

)

如果我删除文件管理器及其所有插件,我的网站就可以正常工作。什么可能导致问题?谢谢

追溯 :

Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of     <django.contrib.staticfiles.management.commands.runserver.Command object at 0x1050d4fd0>>
Traceback (most recent call last):
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-   packages/django/core/management/commands/runserver.py", line 91, in inner_run
self.validate(display_num_errors=True)
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate
num_errors = get_validation_errors(s, app)
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/django/core/management/validation.py", line 30, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/django/db/models/loading.py", line 158, in get_app_errors
self._populate()
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/django/db/models/loading.py", line 67, in _populate
self.load_app(app_name)
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/django/db/models/loading.py", line 88, in load_app
models = import_module('.models', app_name)
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/filer/models/__init__.py", line 2, in <module>
from filer.models.clipboardmodels import *
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/filer/models/clipboardmodels.py", line 5, in <module>
from filer.models import filemodels
File "/Users/Alex/.virtualenvs/FTLOM/lib/python2.7/site-packages/filer/models/filemodels.py", line 8, in <module>
from filer.models import mixins

ImportError:无法导入名称混合

这是我的点冻结:

Django==1.4
PIL==1.1.7
South==0.8.1
cmsplugin-filer==0.9.5
cmsplugin-twitter==1.0.4
django-classy-tags==0.4
django-cms==2.4.1
django-filer==0.9.3
django-mixins==0.0.10
django-mptt==0.5.2
django-ordered-model==0.2.0
django-polymorphic==0.5
django-sekizai==0.7
easy-thumbnails==1.3
gunicorn==17.5
html5lib==1.0b1
six==1.3.0
wsgiref==0.1.2
4

2 回答 2

4

您正在运行 Django 1.4.1 或更低版本,您可以通过以下任何一种方法进行检查:

  1. 在狂欢节上

    pip freeze | grep Django | awk 'BEGIN { FS = "==" } ; { print $2 }'

  2. 在 bash 上,如果 django 已正确设置为 Linux 路径

    django-admin --version

  3. 在 django.shell 上

    import django
    django.VERSION #or
    django.get_version()

虽然没有特别断言,但似乎django-filer0.9.x 与 1.4.1 以下的 django 版本不兼容

修复 mixin 问题无济于事:

首先,django-mixins是一个不同的项目,它的命名空间没有使用也没有冲突。
django-filer包含一个 module mixins,它现在更像是一个图标加载的树桩,而不是任何真正重要的东西。您可以更改foldermodels.pyand filemodels.py

from filer.models import mixins
=> 到
import filer.models.mixins

然而,在解决了这个mixins问题之后,你仍然会遇到 django.utils.six 的导入困难

部分原因是utils.six,一个 Python 2/3 兼容层最近才被添加到 Django 1.4.2

解决方案

您可以从https://github.com/stefanfoulis/django-filer/blob/develop/HISTORY看到,安装版本 0.8.7 可以工作。首先删除较新的 django-filer 包。

 pip uninstall django-filer
 easy_install django-filer==0.8.7

事实上,这个版本在 Django 版本 1.4.1 上运行良好

注意: 如果您安装django-mixins错误,请将其删除。最好不要保留未使用和不依赖的 django 模块。

于 2013-08-19T19:14:25.527 回答
3

我遇到了同样的问题。这个问题很难找到,但很容易解决。

安装后django-polymorphic,一切正常。

于 2014-06-10T10:47:57.913 回答