Virtualenv для нескольких пользователей или групп - PullRequest
4 голосов
/ 26 марта 2012

Я настраиваю новую систему для группы новобранцев Python для выполнения определенного вида научной работы с использованием Python. На нем 2 разных питона (32 и 64 бит), и я хочу установить набор общих модулей, которые будут использовать пользователи в системе.

  • (a) Некоторые модули работают "из коробки" для обоих питонов,
  • (b) некоторый код компиляции и установка по-разному в зависимости от питона, и
  • (c) некоторые вообще не работают на определенных питонах.

Мне сказали, что virtualenv (+ обертка) хорош для такого типа ситуаций, но мне не ясно, как.

  1. Могу ли я использовать virtualenv для установки изолированных модулей для нескольких учетных записей пользователей, не устанавливая каждый модуль для каждого пользователя?
  2. Могу ли я использовать virtualenv, чтобы сэкономить мне время для случая (а), т.е. установить модуль, но все ли питоны видят его?

Мне нравится идея изолировать окружения, а затем просто ввести их "workon science32", "workon science64", в зависимости от проблем, связанных со случаем (c).

Любой совет приветствуется.

1 Ответ

3 голосов
/ 26 марта 2012

С помощью virtualenv вы можете разрешить каждой среде использовать глобально установленные системные пакеты, просто опустив опцию --no-site-packages. Это поведение по умолчанию.

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

Я бы осторожно отнесся к ним как к песочницам, потому что они только частично изолированы. Пути к двоичным файлам и библиотекам Python модифицируются для использования среды, но на самом деле это все, что происходит. Virtualenv не делает ничего, чтобы предотвратить выполнение кода разрушительными действиями в системе. Лучший способ для песочницы - правильно установить разрешения для Linux / Unix и предоставить им собственные учетные записи.

РЕДАКТИРОВАТЬ для версии 1.7 +

По умолчанию в 1.7 не включены системные пакеты, поэтому, если вы хотите, чтобы поведение при использовании системных пакетов использовалось, параметр --system-site-packages. Проверьте документы для получения дополнительной информации.

...