如何在Windows中激活virtualenv时取消激活PYTHONHOME?

时间:2013-07-22 17:00:34

标签: python virtualenv

我在C:\Python27安装了64位Python 2.7.5。

我的环境变量如下:

Path: %PYTHONHOME%\Scripts;
PYTHONHOME: C:\Python27;
PYTHONPATH: C:\Python27\Lib;C:\Python27\Lib\lib-tk;C:\Python27\DLLs;

我创建了一个名为'foo'的virtualenv,但是注意到激活foo后pip freeze显示了我全局安装中的所有包。

玩完之后,似乎删除PYTHONHOME变量修复了这个问题; pip freeze然后才会看到我的virtualenv中安装的软件包。

但是,我目前必须手动删除PYTHONHOME。 virtualenv的Scripts\activate脚本中有一个模糊,应该清除它,但似乎不是($env:PYTHONHOME在激活之前和之后快乐地显示相同的PYTHONHOME):

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "$PYTHONHOME" ] ; then
    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
    unset PYTHONHOME
fi

如何自动清除PYTHONPATH?是否需要在Windows下以某种方式修改activate脚本?

谢谢!

1 个答案:

答案 0 :(得分:0)

创建虚拟环境时,您可以使用--no-site-packages标志:

virtualenv env_name --no-site-packages

然后按照in the documentation

  

.. [virtualenv]将不包括全局安装的软件包。