python - 用于多个用户或组的 Virtualenv

标签 python virtualenv virtualenvwrapper

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

  • (a) 一些模块开箱即用,适用于两种 python,
  • (b) 一些编译代码并根据 python 进行不同的安装,以及
  • (c) 有些对某些 python 根本不起作用。

有人告诉我 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 选项。检查docs了解更多信息。

关于python - 用于多个用户或组的 Virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876482/

相关文章:

python - 为什么当我激活 virtualenv 时我的提示符没有改变?

javascript - 如何在单击时获取 Bokeh DataTable 单元格内容?

python - 如何指定对象类型以便在 Python 中运行代码之前识别它?

centos - 在 CENTOS 7 上为 CKAN 服务器安装 python-setuptools 20.4 或更高版本

python - 如果我计划安装 Virtualenv,是否需要安装 Homebrew?

django - 当我运行 virtualenvwrapper mkvirtualenv 命令时,我不确定 “: command not found” 是什么意思

python - 如何创建一个 RegExp 以匹配最后的 3 个唯一字符和 2 个可选字符?

python - 如何在多个终端上运行一个命令?

python - (Neo)vim python 支持和 active virtualenv 冲突

python - 执行在不同虚拟环境/venv 下构建的 python 脚本?