首页 > 解决方案 > 多用户 Conda 工作流程

问题描述

首先,提一下我的目标是:拥有一个共享的环境结构,供 2+ 用户访问和使用。

当前设置:我有一个连接到公司活动目录的具有完全管理员访问权限的 Windows Server 2016。我已经使用 Python/Conda 几年了,但只是为了我自己,我从来不需要共享任何代码来在相同的条件下运行。

我尝试了各种解决方案来尝试设置它并导致重新安装 anaconda/miniconda 以重新开始但是我一直遇到用户之间的权限问题(两个用户都是服务器上的管理员。我还建立了一个小组服务器并提供了各种 anaconda(在我尝试期间安装在不同的位置;C:\、C:\ProgramData\、D:)。

理想场景的工作方式是:我在 Conda 中创建了一个新环境,该环境安装到用户之间的共享位置。创建环境后,我和其他用户可以激活它,安装软件包,并且两个用户都可以使用其他安装的任何软件包。

我们现在所处的位置是,我在 D:\envs 中创建了一个环境。然后,我要求其他用户在该环境中安装 pandas(我们也尝试过反之亦然),pandas 安装成功,但是当我尝试使用该软件包时,拒绝访问。

如果我需要或尝试其他关于最佳方式的建议,我完全愿意重新开始。

标签: pythoncondawindows-server-2016

解决方案


在 conda 环境的顶级目录中,您需要设置 ACL 列表,以便两个用户都属于的 AD 组(或者只是两个用户的名称,但实际上,这是一个糟糕的选择)可以完全控制所有文件,文件夹和子文件夹/文件。

您还必须设置继承,以便在顶级目录下创建的所有文件/文件夹/对象都继承此权限。

最好在创建新环境之前执行此操作,这样您就不必在创建文件后重新设置所有继承。一个很好的方法是创建一个文件夹来保存你的环境(我在 D 驱动器中做这个例子):

D:
mkdir D:\conda

conda然后为 Active Directory 组设置权限,PythonUsers以便所有子文件夹/文件都继承。

icacls D:\conda /grant:r PythonUsers:(OI)(CI)F /T

此命令通过以下方式更改权限D:\conda

  • 替换授予的权限 ( /grant:r)
  • 对于 AD 组PythonUsers
  • 完全控制(F最后)
  • 此外,设置继承,使其适用于该级别的文件夹和文件(OI)
  • 和所有子文件夹/文件(CI)
  • /T遍历所有已经存在的子文件夹,这应该是没有的,但它确实有害。

现在,当您(或PythonUsersAD 组中的任何用户)在D:\conda下面或下面创建/修改文件时,其中的所有其他用户都PythonUsers应该拥有对它的完全访问权限。

此时,您可以通过以下方式将您的 conda 配置设置为使用新目录作为新环境和包的默认位置:

conda config --prepend envs_dirs D:\conda\envs
conda config --prepend pkgs_dirs D:\conda\pkgs

然后像往常一样启动一个新环境:

conda create -n test python=3.7 pandas

推荐阅读