将Django从1.1升级到1.2

1 投票
1 回答
538 浏览
提问于 2025-04-16 08:07

我有一台装了Nginx和Django 1.1的Ubuntu服务器。在开发者的本地环境中,他用的是Django 1.2,这个版本有一些新功能(比如智能if),现在在我的开发服务器上出现了问题。我需要把Django升级到1.2。

这是我第一次真正参与Django/Python项目,所以我还在摸索中。我想做的就是升级。这个应用里用到了很多额外的包,比如south、pagination、registration等等。

/var/www/env/example.com/lib/python2.6/site-packages

我不是最开始安装这个的。这个文件夹里我看到的内容是这样的。

/var/www/env/example.com/lib/python2.6/site-packages$ ls
Crypto                               django                                pycrypto-2.0.1-py2.6.egg-info
Django-1.1.1-py2.6.egg-info          django-avatar.egg-link                     registration
Fabric-0.9.0-py2.6.egg-info          django_avatar-1.0.5-py2.6.egg-info         setuptools-0.6c9-py2.6.egg
MySQL_python-1.2.3c1-py2.6.egg-info  django_countries                           setuptools.pth
MySQLdb                              django_countries-1.0.4-py2.6.egg-info      simplejson
PIL                                  django_debug_toolbar-0.8.3-py2.6.egg-info  simplejson-2.1.1-py2.6.egg-info
PIL.pth                              django_pagination-1.0.7-py2.6.egg-info     south
South-0.7.2-py2.6.egg-info           django_registration-0.7-py2.6.egg-info     stdimage
_mysql.so                            easy-install.pth                           virtualenvwrapper
_mysql_exceptions.py                 example                                    virtualenvwrapper-1.25-py2.6.egg-info
_mysql_exceptions.pyc                fabric                                     yolk
avatar                               pagination                                 yolk- 0.4.1-py2.6.egg-info
debug_toolbar                        paramiko

现在文档提到,如果是通过egg安装的,升级的过程和手动安装的会不一样?

我在这里看到提到egg文件,那我该怎么进行从Django 1.1升级到1.2呢?

虚拟环境

我们使用虚拟环境(virtualenv)来为网站创建一个“容器”。也就是说,我们可以使用一套和系统不同的模块。

在本地文档中提到过这个。

我们用pip来安装模块:

这个命令需要在虚拟环境外运行(也就是当提示符中没有example.com的时候)。

$ pip -E /var/www/env/example.com install <modulename>

那么我可以用pip安全地升级Django吗?或者说我升级的最佳方法是什么?

$yolk -l
Django          - 1.1.1        - active  
Fabric          - 0.9.0        - active
MySQL-python    - 1.2.3c1      - active
PIL             - 1.1.7        - active
Python          - 2.6.4rc2     - active development (/usr/lib/python2.6/lib-dynload)
South           - 0.7.2        - active
django-avatar   - 1.0.5        - non-active
django-avatar   - 1.1a5        - active development (/var/www/env/example.com/src/avatar)
django-countries - 1.0.4        - active
django-debug-toolbar - 0.8.3        - active
django-pagination - 1.0.7        - active
django-registration - 0.7          - active
pycrypto        - 2.0.1        - active
setuptools      - 0.6c9        - active
simplejson      - 2.1.1        - active
virtualenvwrapper - 1.25         - active
wsgiref         - 0.1.2        - active development (/usr/lib/python2.6)
yolk            - 0.4.1        - active

1 个回答

3

使用命令pip -E /var/www/env/example.com install --upgrade django可以顺利地升级你的django安装。不过,你可能需要先看看django 1.2的更新说明,了解一下有没有什么不兼容的变化,这些变化可能会导致你的代码出问题。此外,建议你先在开发服务器上进行这个操作,并运行你可能有的测试,确保一切正常再上线,因为如果你的代码依赖于一些内部的接口或实现,可能会失效。

我并不是想让你感到害怕,恰恰相反:1.2版本非常棒!只要在上线之前遵循标准的测试流程就好;)

撰写回答