适用于多个用户或组的Virtualenv



我正在为一群Python新手建立一个新系统,让他们使用Python进行特定类型的科学工作。它有两个不同的Python(32位和64位),我想安装一组系统上的用户将使用的通用模块。

  • (a) 有些模块对两条蟒蛇都是开箱即用的
  • (b) 有些根据python的不同编译代码并进行不同的安装,以及
  • (c) 有些对某些蟒蛇根本不起作用

有人告诉我virtualenv(+wrapper)对这种情况很好,但我不清楚怎么做。

  1. 我是否可以使用virtualenv跨多个用户帐户设置沙盒模块,而不必为每个用户安装每个模块
  2. 我可以使用virtualenv为情况(a)节省一些时间吗?即安装一个模块,但让所有Python都看到它

我喜欢隔离环境的想法,然后根据案例(c)的问题,让它们只键入"workon science32"、"workon science64"。

欢迎提出任何建议。

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

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

我会小心地把这些看作沙盒,因为它们只是部分孤立的。python二进制文件和库的路径被修改为使用环境,但实际上这就是全部。Virtualenv不会阻止运行的代码对系统造成破坏。沙盒的最佳方法是正确设置Linux/Unix权限,并为其提供自己的用户帐户。

版本1.7+的编辑

1.7的默认设置是不包括系统包,因此如果希望使用系统包的行为,请使用--system-site-packages选项。查看文档了解更多信息。

最新更新