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 六兼容模块的主要内容,如果未能解决你的问题,请参考以下文章
【Python入门】37.常用第三方模块之 创建虚拟环境virtualenv
升级到 Django 1.7。导入错误:没有名为仪表板的模块