最近我开始使用{{1}},它改变了我的生活,让这么多事情变得如此简单。但是,我想在所有的virtualenvs中提供一些软件包,而且我还没有想出如何做到这一点。有没有办法让pip在每次创建新的virtualenv时安装某些包?
答案 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
将特定软件包安装到给定的虚拟环境中。它可能不是一个理想的解决方案,但它符合我目前的需求,所以这就是我现在要用的。