python - 多用户 Conda 工作流程
问题描述
首先,提一下我的目标是:拥有一个共享的环境结构,供 2+ 用户访问和使用。
当前设置:我有一个连接到公司活动目录的具有完全管理员访问权限的 Windows Server 2016。我已经使用 Python/Conda 几年了,但只是为了我自己,我从来不需要共享任何代码来在相同的条件下运行。
我尝试了各种解决方案来尝试设置它并导致重新安装 anaconda/miniconda 以重新开始但是我一直遇到用户之间的权限问题(两个用户都是服务器上的管理员。我还建立了一个小组服务器并提供了各种 anaconda(在我尝试期间安装在不同的位置;C:\、C:\ProgramData\、D:)。
理想场景的工作方式是:我在 Conda 中创建了一个新环境,该环境安装到用户之间的共享位置。创建环境后,我和其他用户可以激活它,安装软件包,并且两个用户都可以使用其他安装的任何软件包。
我们现在所处的位置是,我在 D:\envs 中创建了一个环境。然后,我要求其他用户在该环境中安装 pandas(我们也尝试过反之亦然),pandas 安装成功,但是当我尝试使用该软件包时,拒绝访问。
如果我需要或尝试其他关于最佳方式的建议,我完全愿意重新开始。
解决方案
在 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
遍历所有已经存在的子文件夹,这应该是没有的,但它确实有害。
现在,当您(或PythonUsers
AD 组中的任何用户)在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