适用于多个用户或组的Virtualenv

时间:2012-03-26 17:04:07

标签: python virtualenv virtualenvwrapper

我正在为一群Python新手设置一个新系统,以便使用Python进行特定类型的科学工作。它上面有两个不同的蟒蛇(32位和64位),我想安装一组系统用户将使用的常用模块。

  • (a)一些模块开箱即用于两个蟒蛇,
  • (b)一些编译代码,并根据python和
  • 进行不同的安装
  • (c)有些人从不在某些蟒蛇身上工作。

我被告知virtualenv(+包装)对这种情况有好处,但我不清楚如何。

  1. 我是否可以使用virtualenv在多个​​用户帐户中设置沙盒模块,而无需为每个用户安装每个模块?
  2. 我可以使用virtualenv为案例(a)节省一些时间,即安装一个模块,但所有蟒蛇都能看到它吗?
  3. 我喜欢隔离环境的想法,然后让他们只输入" workon science32"," workon science64&#34 ;,取决于案例(c)的问题。

    感谢任何建议。

1 个答案:

答案 0 :(得分:3)

使用virtualenv,您可以通过省略--no-site-packages选项,允许每个环境使用全局安装的系统包。这是默认行为。

如果您想让每个环境安装所有自己的软件包,那么使用--no-site-packages,您将获得一个简单的python安装来安装自己的模块。当您不希望包与系统包冲突时,这非常有用。我通常这样做只是为了防止系统升级干扰工作代码。

我会谨慎地将这些视为沙箱,因为它们只是部分隔离。 python二进制文件和库的路径被修改为使用环境,但实际上就是这样。 Virtualenv没有做任何事情来防止代码运行从破坏性的东西到系统。沙盒的最佳方法是正确设置Linux / Unix权限,并为它们提供自己的用户帐户。

编辑版本1.7 +

1.7的默认值是不包含系统包,因此如果您想要使用系统包的行为,请使用--system-site-packages选项。查看docs了解详情。