Windows上的virtualenv:没有超越已安装的软件包

时间:2010-06-02 19:51:05

标签: python virtualenv

我目前的设置是Windows上的Python 2.5 / Django 1.1.1。我想在一些项目上开始使用Django 1.2,但不能将它用于一切。这就是我virtualenv的那种东西。但是,我遇到了一个我从未遇到过的问题,谷歌很难:将Django 1.2安装到virtualenv对我没有任何影响。如果我然后激活环境并执行

  • import django
  • django.VERSION

我得到“1.1.1 Final”。 Django安装在我的环境的site-packages目录中,root中的init文件显示它是1.2。但是,即使我使用--no-site-packages标志创建环境,环境也会回落到1.1.1。我搞砸了什么?

2 个答案:

答案 0 :(得分:9)

根据您在bitbucket上提交的错误,看起来您正在使用PYTHONPATH环境变量指向包含某些包的目录,包括Django 1.1.1。按照设计,PYTHONPATH总是在你的sys.path中排在第一位,即使你已经激活了virtualenv(因为PYTHONPATH在你的直接和即时控制之下,并且人们用它来进行本地覆盖)。

在这种情况下,如果您在激活此virtualenv时不想要PYTHONPATH,则需要自己处理;也许通过创建一个自定义批处理文件,它既可以调用virtualenv的activate.bat,也可以修改PYTHONPATH。

答案 1 :(得分:2)

您可以使用一些工具来诊断这些问题:

要查看django的来源,请打印django.__file__。它将显示指示django在文件系统上的位置的文件。

要查看Python将查找包的所有位置,请打印sys.path。这是一个目录列表。

要查看导入,请将python作为python -v启动,您将看到有关导入包的位置的大量调试信息。