0

我是 Django 的新手,我马上就遇到了一个大问题。我无法使用 startproject 来启动我的网络应用程序。

当我使用这个命令时:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/bin/django-admin.py startproject cms

我收到此错误:

UnicodeDecodeError:“utf8”编解码器无法解码位置 37 中的字节 0xb0:无效的起始字节

然后它不会创建网络应用程序。我什至没有做过任何编程,这似乎是 Django 文件的问题,但我真的很困惑,因为他们自己的文件会有一个不是英语的字符会导致这个错误。我一直在网上搜索,发现有人出现 Unicode 解码错误,但在这个特定步骤中没有任何人,到目前为止我还没有找到答案。我在带有 Snow Leopard 的 Mac 上运行 Django,并且正在使用带有 Python 2.7 的稳定版本的 Django。我一直在尝试解决这个问题,但我一直在碰壁,我真的很想尝试 Django。谢谢你的帮助!

4

1 回答 1

1

我知道这个问题太老了,但是这个问题让我很头疼,我会分享我的解决方案,以便其他人受益。

我有完全相同的问题。在我的情况下,错误是因为当我解压缩 django 安装的 tar.gz 文件时,存档中的每个文件都有某种由 MacOS 创建的隐藏安全副本。因此,django 的模板文件夹中有很多带有奇怪字符的隐藏文件,这导致在 django-admin 脚本时出现错误消息“UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 37: invalid start byte”试图将模板复制到目标文件夹。我所要做的就是找到每个名称以“。”开头的文件。并从 django 安装文件夹中删除它们。

我通过对 django 进行非常简单的调试发现了这一点,即使您的问题的原因不同,这种调试技术也可以帮助您找出正在发生的事情。

读取错误发生时的回溯我发现错误发生在函数调用 content.decode('utf-8') 上,在 django 1.8.1 中是在 django\core\management\templates.py 文件中生成的,第 150 行。我打开 templates.py 文件,找到该行并注意到“内容”是当前正在读取的模板文件的内容,它存储在变量“old_path”中。然后编辑 templates.py 以在调用 content.decode('utf-8') 之前打印“old_path”变量的值,当我再次运行 django-admin 脚本时,错误文件的名称出现在命令提示符。如果您重复此过程,您可以检查文件是否包含奇怪的字符,以及该文件是否不应该位于模板文件夹中(就像我的情况一样)。

于 2015-05-17T01:52:31.787 回答