python_2_unicode_compatible错误

kma*_*o23 3 python django ubuntu django-models python-2.7

models.py如下,

from django.contrib.auth.models import User
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.timezone import now

@python_2_unicode_compatible
class Tag(models.Model):
    name = models.CharField(max_length=50, unique=True)

    class Meta:
            verbose_name = 'tag'
            verbose_name_plural = 'tags'
            ordering = ['name']

    def __str__(self):
            return self.name
.............  and so on
Run Code Online (Sandbox Code Playgroud)

当我跑python manage.py syncdb这是我得到的错误:

itman@itman:~/djangoApp/mysite$ python manage.py syncdb
Traceback (most recent call last): 
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 231, in execute
    self.validate()
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/lib/python2.7/dist-packages/django/core/management/validation.py", line 30, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/lib/python2.7/dist-packages/django/db/models/loading.py", line 158, in get_app_errors
    self._populate()
  File "/usr/lib/python2.7/dist-packages/django/db/models/loading.py", line 67, in _populate
    self.load_app(app_name)
  File "/usr/lib/python2.7/dist-packages/django/db/models/loading.py", line 88, in load_app
    models = import_module('.models', app_name)
  File "/usr/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/itman/djangoApp/mysite/bmark/models.py", line 4, in <module>
    from django.utils.encoding import python_2_unicode_compatible
ImportError: cannot import name python_2_unicode_compatible
Run Code Online (Sandbox Code Playgroud)

我不知道为什么模块没有导入.我正在使用Python 2.7和Django 1.4.

小智 27

对于最新的 Django 3.0.4 和 auditlog 试试

from six import python_2_unicode_compatible
Run Code Online (Sandbox Code Playgroud)

代替

from django.utils.six import python_2_unicode_compatible
Run Code Online (Sandbox Code Playgroud)

如果没有安装运行下面的代码

pip install six
Run Code Online (Sandbox Code Playgroud)


小智 12

尝试

from django.utils.six import python_2_unicode_compatible
Run Code Online (Sandbox Code Playgroud)

代替

from django.utils.encoding import python_2_unicode_compatible
Run Code Online (Sandbox Code Playgroud)

这在 Django 1.10.6 中对我很有效

  • Django 3.0更改为“从六种导入python_2_unicode_兼容” (8认同)
  • 6 在 django 3.0.2 中不可用,仍然面临这个问题 (2认同)

Sat*_*hia 8

当我将Django 版本 2.x 升级到 3.x时,我遇到了同样的问题。

这个问题是我由于auditlog图书馆而遇到的。

首先,执行以下命令

pip uninstall auditlog
Run Code Online (Sandbox Code Playgroud)

然后

pip install auditlog3
Run Code Online (Sandbox Code Playgroud)


yet*_*tty 7

python_2_unicode_compatible 功能仅在Django 1.5版本中添加.

https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.encoding.python_2_unicode_compatible

  • 这个答案实际上没有回答这个问题,而且我在django 1.3中遇到了同样的错误.升级到1.6会破坏石墨,所以...谢谢,但这真的不是一个答案. (4认同)

Ami*_*ati 6

对我来说,问题是包与 github上的问题django-jet不兼容,显然你需要使用它。django3django-jetdjango-3-jet


mre*_*mre 5

当我想将 Django 用于 Graphite 时,我遇到了这个问题。结果我安装了 Django 1.3 并且我的 Graphite 版本在 Django > 1.5 时崩溃了,所以安装最新版本的 1.4 分支解决了这个问题:

sudo pip install --upgrade 'Django<1.5'
Run Code Online (Sandbox Code Playgroud)