Шаг 179.
Python: тонкости программирования. Питоновские методы ... . Изоляция зависимостей проекта при помощи Virtualenv (общие сведения)

    На этом шаге мы определимся с дальнейшим изложением.

    Python содержит мощную систему управления пакетами, позволяющую управлять модулями, от которых зависят ваши программы. Вы, вероятно, ее использовали, когда устанавливали сторонние пакеты при помощи команды менеджера пакетов pip.

    Сбивающим с толку аспектом установки пакетов при помощи pip является то, что он по умолчанию пытается устанавливать их в вашу глобальную среду Python.

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

    Что, если один из ваших проектов нуждается в версии 1.3 библиотеки, в то время как для другого проекта нужна версия 1.4 той же самой библиотеки?

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

    И чем дальше, тем хуже. У вас также могут быть разные программы, для которых нужны различные версии самого языка Python. Например, некоторые программы могут по-прежнему выполняться в Python 2, в то время как основная часть вашей новой разработки происходит в Python 3. Или что, если для одного из ваших проектов нужен Python 3.3, в то время как все остальное работает в Python 3.6?

    Помимо этого, глобальная установка пакетов Python также может стать фактором риска с точки зрения обеспечения безопасности. Для модификации глобальной среды нередко требуется, чтобы вы выполняли команды pip install с правами суперпользователя (root-, или админ-правами). Когда вы устанавливаете новый пакет, менеджер пакетов pip скачивает и исполняет код из интернета, а это обычно не рекомендуется. Хотелось бы надеяться, что устанавливаемый программный код заслуживает доверия, но кто его знает, что он делает на самом деле...

    На следующем шаге мы рассмотрим использование виртуальных сред.




Предыдущий шаг Содержание Следующий шаг