Многопользовательский рабочий процесс Conda - PullRequest
0 голосов
/ 31 января 2020

Во-первых, чтобы упомянуть, в чем заключается моя цель: иметь структуру общего окружения для доступа и использования для 2+ пользователей.

Текущая настройка: у меня есть Windows Server 2016 с полным доступом администратора, который подключен в активный каталог компаний. Я использую Python / Conda уже пару лет, но только для себя, мне никогда не приходилось делиться каким-либо кодом для запуска в тех же условиях.

Я пробовал различные решения, пытаясь установить это и привел к переустановке anaconda / miniconda снова и снова для свободного запуска sh, однако я продолжаю сталкиваться с проблемами разрешений между пользователями (оба пользователя являются администраторами на сервере. Я также создал группу на сервере и дал различные anaconda (устанавливается в разных местах во время моих попыток; C: \, C: \ ProgramData \, D:).

Как будет работать идеальный сценарий: я создаю новую среду в Конде, которая Устанавливается в общую папку между пользователями. Как только я создаю среду, я и другие пользователи могут активировать ее, устанавливать пакеты, и оба пользователя могут использовать любой пакет, который устанавливает другая.

Где мы сейчас находимся Я создал среду в D: \ envs. Затем я попросил другого пользователя установить pandas в этой среде (мы также попробовали наоборот), pandas успешно устанавливается, но затем говорит, что Access Denied для того, когда я пытаюсь использовать этот пакет.

Я полностью открыт для запуска fre sh, если мне нужно или попробовать другие предложения на лучший способ сделать это.

Ответы [ 2 ]

1 голос
/ 31 января 2020

В качестве альтернативы использованию общего местоположения для среды conda, вы рассматривали возможность сохранения файла среды , который определяет, какие пакеты должны быть в среде, и позволяли каждому пользователю создавать свою собственную среду локально, используя это файл (conda env create -f path\to\environment.yml)?

Файл может быть сохранен в вашей системе управления версиями, и, если вы захотите, вы, возможно, даже сможете автоматизировать обновление conda env, если обновление из VCS изменит файл, через хук в вашем клиенте VCS.

Это звучит как менее гибкий и более масштабируемый способ сделать что-то для меня, и поддержание файла среды, который определяет зависимости вашего проекта, - хорошая практика в любом случае.

0 голосов
/ 31 января 2020

В каталоге верхнего уровня для среды conda вам нужно настроить список ACL таким образом, чтобы группа AD, к которой принадлежат оба пользователя (только по именам обоих пользователей, но на самом деле это плохая опция), имела полный контроль над все файлы, папки и подпапки / файлы.

Вы также должны установить наследование, чтобы все файлы / папки / объекты, созданные в каталоге верхнего уровня, наследовали это разрешение.

Лучше делать это ПРЕЖДЕ чем вы создадите новую среду, чтобы вам не нужно было go просматривать и сбрасывать все наследования после создания файлов. Хороший способ сделать это - создать папку, в которой будут храниться ваши среды (я делаю этот пример на 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
...