在所有virtualenvs中安装某些包

时间:2016-04-06 02:21:19

标签: python virtualenv

最近我开始使用{{1}},它改变了我的生活,让这么多事情变得如此简单。但是,我想在所有的virtualenvs中提供一些软件包,而且我还没有想出如何做到这一点。有没有办法让pip在每次创建新的virtualenv时安装某些包?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果您总是想要一个特定的集合,这与全局site-packages集合不同,那么您可以编写一个简单的封装脚本来设置env,激活它并安装这些软件包。

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

如果您将其另存为venvwrapper,则可以alias virtualenv=venvwrapper或类似内容.bashrc

答案 2 :(得分:0)

虽然这个问题的其他答案都非常有价值且信息丰富,但我一直在寻找类似于@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

这样所有这些软件包都可用,然后我可以通过pip内的virtualenv将特定软件包安装到给定的虚拟环境中。它可能不是一个理想的解决方案,但它符合我目前的需求,所以这就是我现在要用的。