Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишут INSTALL.md, README.md, make-файлы и что более важно - requirements.txt.

Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:

# requrements.txt
requests==2.7.0
Django==1.8.3
jsonfield==1.0.3
django-hstore==1.4
django-filebrowser==3.5.7
django-object-actions==0.5.1
sorl-thumbnail==12.3
django-ajax==0.2.0
git+https://github.com/maraujop/django-crispy-forms.git

Предположим, файл есть, инструкция по запуска есть. Да вот только таких проектов надо запускать много и у каждого свои зависимости. Причем не получится все установить в систему, версии же могут конфликтовать.

Для решения этой проблемы был придуман virtualenv.

virtualenv - это инструмент, который позволяет установить отдельный Python, со своими модулями, зависимостями и пр. Что интересно, на одной машине может стоят несколько версий Python с разным набором библиотек. Такой инструмент позволяет устанавливать, изменять и удалять пакеты, и это не повлияет на другие ваши проекты или системное окружение.

Погружаемся в тему:

И смотрим доклад на тему "Pip install — почему так медленно?" - https://events.yandex.ru/lib/talks/3070/



Комментарии