Django和Python六兼容模块

时间:2015-09-15 04:28:27

标签: python django python-2.7 python-3.x six-python

最近我正在研究我的Django网络应用程序,当我发现由于某些原因Django只在我使用python 2.x时才工作。解释器,但我一直认为它已经为Python 3配置,因此编码就像这样。

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

P.S。我有点理解六个是如何工作的,但是对它有更多的了解会更好。

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您的系统使用的哪个Python版本没有任何内容与六个模块有关。这是Django内部使用的能够与2.7和3.x一起使用的东西。

如果要在本地使用Python 3,则需要配置系统以执行此操作。这可能仅仅意味着使用Python 3创建virtualenv。