5

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

  • (a) 一些模块对两种 python 都是开箱即用的,
  • (b) 一些编译代码和安装取决于 python,并且
  • (c) 有些对某些蟒蛇根本不起作用。

有人告诉我 virtualenv (+ wrapper) 对这种情况有好处,但我不清楚如何做。

  1. 我可以使用 virtualenv 跨多个用户帐户设置沙盒模块,而无需为每个用户安装每个模块吗?
  2. 我可以使用 virtualenv 为案例 (a) 节省一些时间,即安装一个模块,但所有 python 都可以看到它吗?

我喜欢隔离环境的想法,然后让它们只需键入“workon science32”、“workon science64”,具体取决于案例 (c) 的问题。

任何建议表示赞赏。

4

1 回答 1

3

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

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

我会小心地将这些视为沙箱,因为它们只是部分隔离的。修改 python 二进制文件和库的路径以使用环境,但实际上就是这样。Virtualenv 不会阻止运行的代码对系统造成破坏性影响。沙盒的最佳方式是正确设置 Linux/Unix 权限,并为他们提供自己的用户帐户。

编辑版本 1.7+

1.7 的默认设置是不包括系统包,因此如果您想要使用系统包的行为,请使用该--system-site-packages选项。检查文档以获取更多信息。

于 2012-03-26T17:17:39.013 回答