virtualenv 编辑系统范围的设置

virtualenv edits system-wide settings

我使用以下命令安装了一个新的虚拟环境:

sudo virtualenv --python=python3.4 mysite

然后,我编辑了新建文件夹的权限:

sudo chmod -R 777 mysite/

然后我开始激活虚拟环境:

source mysite/bin/activate

virtualenv 已激活,提示前显示 (mysite)。

在我的系统范围 python 包中,我安装了 django 版本 1.7.1。我想将 django 1.8 安装到 virtualenv。所以,我这样做了:

sudo pip3 install django==1.8

但令我恐惧的是,它从我的系统中删除了 django 1.7.1 并在系统上安装了 1.8,而不仅仅是我想要的 virtualenv。

我通过 运行 确认了这一点:

python -c "import django; print(django.get_version())"

它 returns 1.8 在 vi​​rtualenv 被激活和停用时。

如何只在 virtualenv 中安装 1.8,而不影响系统范围的 django 版本?

不需要使用sudo virtualenv只使用virtualenv

virtualenv 的目的是隔离 python 环境。

当你在 virtualenv 中时,不要使用 sudo pip / sudo pip3。 使用不带 sudo 的 pip。 sudo pip 用于在系统范围内安装 python 个软件包。

所以,正常的工作流程是

virtualenv --python=python3.4 mysite
source mysite/bin/activate

pip install <package_name_version> 喜欢 pip install django==1.8

我的猜测是指定要使用的 python / pip 的环境变量(尤其是 PATH)没有通过 sudo 传递。无论如何你为什么要sudo任何东西?只需创建 virtualenv 作为您的用户,source bin/activate 作为您的用户,并 运行 pip 作为您的用户。

有关详细信息:man sudoers 并搜索 Command environment

在通过 pip 安装 django 时不要使用 sudo,并尝试使用 sudo less 来创建虚拟环境和更改权限。 我已经尝试过这些方法并且已经做到了