Virtualenv:глобальные пакеты сайта против пакетов сайта в виртуальной среде

StackOverflow https://stackoverflow.com/questions/1860348

  •  13-09-2019
  •  | 
  •  

Вопрос

  1. Если у меня установлен определенный пакет как в глобальных пакетах сайта, так и в локальном, какой пакет будет импортирован?Это вообще сработает или я получу сообщение об ошибке?
  2. Какие пакеты я должен поместить в глобальные пакеты сайта, а какие - в локальный?
Это было полезно?

Решение

Предыдущий ответ завершает вопрос 1, но игнорирует вопрос 2.

Общая наилучшая практика, которую я видел, для определения того, какие пакеты размещать глобально:

Во-первых, основные пакеты Python, поскольку они не изменяются из-за проблем с обратной несовместимостью, если только вы не обновляете основную версию, и вы захотите, чтобы все исправления безопасности из обновления python автоматически применялись к вашим виртуальным компьютерам.

Во-вторых, пакеты, которые затрудняют установку easy_install или pip в каждый отдельный virtualenv, но которые меняются не очень часто - например, MySQLdb / psycopg и PIL.

Практически все остальное должно входить в пакеты вашего virtualenv (я настоятельно рекомендую использовать пип файлы требований и virtualenvwrapper ( виртуальная оболочка ) чтобы сделать это минимально болезненным и простым в настройке на других машинах).

Другие советы

Вновь созданная виртуальная среда по умолчанию имеет доступ к глобальному каталогу site-packages, если только не создана с помощью --no-site-packages.Вызов easy_install (установка новых пакетов) при активации определенной среды вызовет локальную перезапись уже существующих пакетов в глобальных site-пакетах (аналогично наследованию).Среда будет использовать свои собственные локальные пакеты, при отсутствии - глобальные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top