Нужен ли мне virtualenv? - PullRequest
       1

Нужен ли мне virtualenv?

3 голосов
/ 23 февраля 2012

Для каждого проекта и каждого этапа (dev, prod, ...) я использую другого пользователя linux.Я могу использовать pip и опцию --user для установки пакетов в $ HOME.

Моя изолированная среда поставляется от разных пользователей Linux.

Какие преимущества я могу получить от virtualenv?До сих пор я не вижу причин использовать virtualenv.Но, может быть, я что-то упускаю.

Имена пользователей Linux создаются следующим образом: имя_проекта_S и S - этап (dev, qual, prod, testing).Каждый этап может быть на другом хосте.

Обновление:

Более трех лет после того, как я задал этот вопрос: сейчас я использую virtualenv. пользовательская среда глючила.Может быть, теперь у него есть лучшая поддержка.Но ничто не мешает вам создать virtualenv в $ HOME: -)

Ответы [ 3 ]

3 голосов
/ 23 февраля 2012

Virtualenv отлично подходят для управления зависимостями.Файлы конфигурации (или файлы настроек) очень хороши для управления переменными различиями между средами.(например, db location e.tc)

Руководство по автостопу на питоне очень хорошее и стоит 20 минут чтения.http://docs.python -guide.org / ru / latest / index.html

См. Этот раздел по виртуальным окружениям.

http://docs.python -guide.org/ en / latest / dev / virtualenvs /

Если вы просто хотите использовать другие переменные режима home или env, вы можете просто установить их перед запуском кода python.

 PROD_MODE=PROD python example.py

example.py будет искать переменную PROD_MODE следующим образом.

import os
print os.environ['PROD_MODE']

Так вам нужен virtualenv?

Я бы настоятельно рекомендовал это сделать.Итак, у вас работает Django, и вы импортировали некоторые другие библиотеки (я также настоятельно рекомендую pip), и все работает на вашем компьютере.Ваш путь настроен, и ваш код может быть преобразован в код с помощью PATH и PYTHON_PATH.Brilliant!

Теперь вы приступаете к развертыванию на другой машине (возможно, aws, сервере Linux или аналогичной) или другой разработчик хочет помочь написать код для вашего проекта.Как они удостоверяются, что env на этом компьютере настроен точно так же, как ваш, и как вы обеспечиваете развертывание с тем же env, с которым вы тестировали весь свой новый код?Virtualenv делает это для вас!Вы просто портируете или воссоздаете виртуальную среду на новой машине, когда все работает так же, как проверено / встроено.

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

3 голосов
/ 23 февраля 2012

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

1 голос
/ 23 февраля 2012

Некоторые вещи, которые вы получаете с virtualenv, которые вы не получаете с пользовательскими или домашними схемами:

  1. Возможность использовать разные версии пакетов - например, django stable и django dev для разных сайтов, не загрязняя общесистемную установку Python (или установку python вашего пользователя).

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

В общем, я бы порекомендовал вам повторно посетить virtualenv для вашего следующего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...