4

我有 64 位 Python 2.7.5 安装在C:\Python27.

我的环境变量如下:

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

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

在玩了之后,似乎删除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脚本?

谢谢!

4

1 回答 1

0

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

virtualenv env_name --no-site-packages

然后如文档中所述

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

于 2015-12-09T17:50:38.900 回答