【问题标题】:Install certain packages in all virtualenvs在所有 virtualenvs 中安装某些包
【发布时间】:2016-07-26 05:16:07
【问题描述】:

最近我开始使用virtualenv,它改变了我的生活,让很多事情变得如此简单。但是,我希望在所有 virtualenvs 中都提供一些包,但我还没有弄清楚如何做到这一点。每次我创建一个新的 virtualenv 时,有没有办法让 pip 安装某些包?

【问题讨论】:

    标签: python virtualenv


    【解决方案1】:

    来自documentation:如果您使用 virtualenv --system-site-packages ENV 构建,您的虚拟环境将从 /usr/lib/python2.7/site-packages(或您的全局站点包目录的任何位置)继承包是)。

    【讨论】:

      【解决方案2】:

      如果您总是想要一个特定的集合,它不同于全局站点包集合,您可以编写一个简单的包装脚本来设置环境、激活环境并安装这些包。

      #!/bin/sh
      virtualenv "$1"
      . "$1"/bin/activate
      pip install six  # f'rinstance
      

      如果您将其保存为venvwrapper,您可以在.bashrc 或类似名称中找到alias virtualenv=venvwrapper

      【讨论】:

        【解决方案3】:

        虽然此问题的其他答案都非常有价值且内容丰富,但我一直在寻找类似于 @Sergey Gornostaev 建议的解决方案。但是,我在 Ubuntu 上并通过apt 安装了我的大部分 Python 包(至少是我希望在全球范围内可用的包)。这意味着我的包裹最终在dist-packages,而site-packages 仍然是空的,所以我不能使用@Sergey 的解决方案。相反,我使用了this answer中的解决方案。

        基本上,如果可能,我会通过apt 安装我希望在所有环境中可用的软件包。然后我将以下(或它的一些变体)添加到我的.bashrc

        export PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages
        

        这样所有这些包都可用,然后我可以通过pipvirtualenv 中将单独的包sepecifc 安装到给定的虚拟环境中。它可能不是一个理想的解决方案,但它满足了我当前的需求,所以这就是我现在将使用的。

        【讨论】:

          猜你喜欢
          • 2015-10-28
          • 1970-01-01
          • 1970-01-01
          • 2011-03-17
          • 1970-01-01
          • 1970-01-01
          • 2016-07-01
          • 2020-05-19
          相关资源
          最近更新 更多