【发布时间】:2016-07-26 05:16:07
【问题描述】:
最近我开始使用virtualenv,它改变了我的生活,让很多事情变得如此简单。但是,我希望在所有 virtualenvs 中都提供一些包,但我还没有弄清楚如何做到这一点。每次我创建一个新的 virtualenv 时,有没有办法让 pip 安装某些包?
【问题讨论】:
标签: python virtualenv
最近我开始使用virtualenv,它改变了我的生活,让很多事情变得如此简单。但是,我希望在所有 virtualenvs 中都提供一些包,但我还没有弄清楚如何做到这一点。每次我创建一个新的 virtualenv 时,有没有办法让 pip 安装某些包?
【问题讨论】:
标签: python virtualenv
来自documentation:如果您使用 virtualenv --system-site-packages ENV 构建,您的虚拟环境将从 /usr/lib/python2.7/site-packages(或您的全局站点包目录的任何位置)继承包是)。
【讨论】:
如果您总是想要一个特定的集合,它不同于全局站点包集合,您可以编写一个简单的包装脚本来设置环境、激活环境并安装这些包。
#!/bin/sh
virtualenv "$1"
. "$1"/bin/activate
pip install six # f'rinstance
如果您将其保存为venvwrapper,您可以在.bashrc 或类似名称中找到alias virtualenv=venvwrapper。
【讨论】:
虽然此问题的其他答案都非常有价值且内容丰富,但我一直在寻找类似于 @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 中将单独的包sepecifc 安装到给定的虚拟环境中。它可能不是一个理想的解决方案,但它满足了我当前的需求,所以这就是我现在将使用的。
【讨论】: