如何在虚拟环境中强制更新Django版本?
我想在一个新的虚拟环境中安装1.3.1版本的Django。我的系统上已经安装了Django的1.3.0版本。我用no-site-packages
创建了虚拟环境,并尝试重新安装Django,结果却没有成功:
$ virtualenv --no-site-packages pyenv
New python executable in pyenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$ source pyenv/bin/activate
(pyenv)$ python
Python 2.6.6 (r266:84292, May 26 2011, 21:27:16)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 3, 0, 'final', 0)
好吧,尽管我没有安装Django,并且使用了no-site-packages
,这个虚拟环境还是 somehow 识别到了系统上的版本。
现在我想用1.3.1版本来覆盖它:
(pyenv)$ pip install django==1.3.1
Downloading/unpacking django==1.3.1
Downloading Django-1.3.1.tar.gz (6.5Mb): 6.5Mb downloaded
Running setup.py egg_info for package django
Installing collected packages: django
Found existing installation: Django 1.3
Not uninstalling Django at /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages, outside environment /Users/anna/Dropbox/code-local/pyenv/pyenv/bin/..
Running setup.py install for django
changing mode of build/scripts-2.6/django-admin.py from 644 to 755
changing mode of /Users/anna/Dropbox/code-local/pyenv/pyenv/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
(pyenv)$ python
Python 2.6.6 (r266:84292, May 26 2011, 21:27:16)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
但是这也没成功,它还是指向1.3.0!
注意这一行:Found existing installation: Django 1.3 Not uninstalling Django
。
我该如何强制我的虚拟环境使用1.3.1版本?我需要编辑我的本地Python路径吗?
我很困惑,为什么虚拟环境能看到系统上的Django,明明我已经明确使用no-site-packages
安装了。这是正常的吗?
4 个回答
1
我觉得与其强制使用django 1.3.1,不如先退一步,看看可能出现问题的原因:
- 虚拟环境中的
site-packages
目录里有什么内容? - 被导入的django版本的
django.__file__
的值是什么? - 在
site.py
中有没有什么自定义设置,或者你是否在使用用户站点目录?
顺便说一下,我用同样的命令加上 --no-site-packages
选项时,无法导入系统范围内安装的django版本。
2
你可以使用 -U 这个选项来升级软件。
比如,你可以这样输入命令来安装或升级 Django 到 1.3.1 版本:
pip install -U django==1.3.1
4
在你使用 --no-site-packages
创建并激活虚拟环境之后,应该是无法访问到 django 这个包的。我猜想你可能以某种方式修改了 PYTHONPATH
,让它可以访问到这个包。你可以用 echo $PYTHONPATH
来查看一下(我的是空字符串)。试着运行 pip freeze
,看看结果是什么样的:
$> virtualenv --no-site-packages testenv
New python executable in testenv/bin/python2.7
Also creating executable in testenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$> source testenv/bin/activate
(testenv)$> pip freeze
wsgiref==0.1.2