我正在为一组 Python 菜鸟建立一个新系统,以使用 Python 进行特定类型的科学工作。它上面有 2 个不同的 python(32 位和 64 位),我想安装一组系统用户将使用的通用模块。
- (a) 一些模块开箱即用,适用于两种 python,
- (b) 一些编译代码并根据 python 进行不同的安装,以及
- (c) 有些对某些 python 根本不起作用。
有人告诉我 virtualenv (+ wrapper) 适用于这种情况,但我不清楚如何使用。
- 我可以使用 virtualenv 跨多个用户帐户设置沙盒模块,而不必为每个用户安装每个模块吗?
- 我可以使用 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
选项。检查docs了解更多信息。
关于python - 用于多个用户或组的 Virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876482/