在所有 virtualenvs 中安装某些包
Install certain packages in all virtualenvs
最近我开始使用virtualenv
,它改变了我的生活,让很多事情变得如此简单。但是,有些包我希望在所有 virtualenvs 中都可用,但我还没有想出如何做到这一点。每次我创建一个新的 virtualenv 时,有没有办法让 pip 安装某些包?
来自 documentation:如果您使用 virtualenv --system-site-packages ENV 构建,您的虚拟环境将从 /usr/lib/python2.7/site-packages(或您的全球站点的任何位置)继承包-packages 目录是).
如果有一个您一直想要的特定集合,它不同于全局站点包集合,您可以编写一个简单的包装脚本来设置环境、激活它并安装这些包。
#!/bin/sh
virtualenv ""
. ""/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
中将单独的包安装到给定的虚拟环境中。它可能不是一个理想的解决方案,但它满足了我当前的需求,所以这就是我现在将要使用的。
最近我开始使用virtualenv
,它改变了我的生活,让很多事情变得如此简单。但是,有些包我希望在所有 virtualenvs 中都可用,但我还没有想出如何做到这一点。每次我创建一个新的 virtualenv 时,有没有办法让 pip 安装某些包?
来自 documentation:如果您使用 virtualenv --system-site-packages ENV 构建,您的虚拟环境将从 /usr/lib/python2.7/site-packages(或您的全球站点的任何位置)继承包-packages 目录是).
如果有一个您一直想要的特定集合,它不同于全局站点包集合,您可以编写一个简单的包装脚本来设置环境、激活它并安装这些包。
#!/bin/sh
virtualenv ""
. ""/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
中将单独的包安装到给定的虚拟环境中。它可能不是一个理想的解决方案,但它满足了我当前的需求,所以这就是我现在将要使用的。