【问题标题】:virtualenv edits system-wide settingsvirtualenv 编辑系统范围的设置
【发布时间】:2015-05-05 11:33:56
【问题描述】:

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

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())"

virtualenv 激活和停用时都返回 1.8。

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

【问题讨论】:

    标签: python django virtualenv


    【解决方案1】:

    无需使用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

    【讨论】:

      【解决方案2】:

      我的猜测是指定要使用的python/pip(尤其是PATH)的环境变量不是通过sudo传递的。为什么你必须 sudo 无论如何?只需以您的用户身份创建 virtualenv,以您的用户身份创建源 bin/activate,并以您的用户身份运行 pip。

      更多信息:man sudoers 并搜索Command environment

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-03
          • 2010-10-07
          • 2012-04-30
          • 2014-09-24
          • 1970-01-01
          • 2012-09-01
          • 1970-01-01
          • 2012-04-30
          相关资源
          最近更新 更多