Django 和 Python 六兼容模块

Posted

技术标签:

【中文标题】Django 和 Python 六兼容模块【英文标题】:Django and the Python six compatibility module 【发布时间】:2015-12-11 05:13:05 【问题描述】:

最近我正在开发我的 Django Web 应用程序,当我发现出于某种原因 Django 仅在我使用 python 2.x 时才有效。解释器,但我一直认为它是为 Python 3 配置的,因此是这样编码的。

所以我用print(sys.version()) 对其进行了测试,并在 Python 2.7 出现时感到惊讶。经过一番挖掘,我发现 Django 使用了six 模块。我的第一个问题是为什么 Django 使用它?除了让程序员更容易之外,还有什么理由吗?我的第二个问题是,既然我一直把它当作 Python 3 对待,我应该回去更改我的代码,使它成为纯 Python 2 吗?还是没关系?

附:我有点了解 6 的工作原理,但如果能多了解一点,那就太好了。

谢谢。

【问题讨论】:

【参考方案1】:

您的系统使用的 Python 版本与六个模块没有任何关系。这是 Django 在内部使用的,以便能够同时使用 2.7 和 3.x。

如果您想在本地使用 Python 3,您需要配置您的系统来执行此操作。例如,这可能只是意味着使用 Python 3 创建您的 virtualenv。

【讨论】:

【参考方案2】:

Django 1.5 是第一个支持 Python 3 的 Django 版本。由于六个兼容层,相同的代码在 Python 2 (≥ 2.6.5) 和 Python 3 (≥ 3.2) 上运行。

如果您以Python ≥ 2.6 为目标,则编写兼容代码会容易得多。 Django 1.5引入了django.utils.six等兼容工具,是六大模块的定制版。为方便起见,在Django 1.4.2 中引入了向前兼容的别名。如果您的应用程序利用这些工具,则需要Django ≥ 1.4.2

更多内容请阅读Porting to Python 3

【讨论】:

以上是关于Django 和 Python 六兼容模块的主要内容,如果未能解决你的问题,请参考以下文章

第六模块:WEB框架开发 第1章·Django框架开发

【Python入门】37.常用第三方模块之 创建虚拟环境virtualenv

python之旅六第六篇模块

升级到 Django 1.7。导入错误:没有名为仪表板的模块

第六模块:WEB框架开发 第1章·Django框架开发50~100

Python学习笔记六(常用模块面向对象基础)