Для Python существует отличный инструмент — virtualenv. Если вы являетесь разработчиком, то для вас он должен быть незаменимым. Как вы могли догадаться, он создаёт виртуальное окружения для Python’а. Наверное, вы сталкивались с проблемой когда разные проекты используют разный набор пакетов, но это ещё пол беды, всё гораздо хуже, когда эти множества пересекаются, но требуются разные версии одних и тех же пакетов, которые, к тому же, не полностью совместимы друг с другом. Virtualenv позволяет решить эту проблему достаточно легко.
Установка virtualenv в linux
Под Ubuntu не должно возникнуть никаких проблем, устанавливаем с помощь стандартного пакетного менеджера, например, так:
$ sudo apt-get install python-virtualenv
Создание виртуального окружения для Python
Теперь вы можете создать для каждого вашего проекта своё окружение и работать только в нём. Есть два вида виртуальных окружений — изолированное от установленных в систему пакетов и нет. Я пользуюсь только изолированным вариантом, иногда из-за этого могут возникать какие-то проблемы, чаще всего — это необходимость установить какие-то библиотеки в систему, но обычно это легко и быстро решается, хотя и не всегда. Более того, изолированный вариант обеспечивает большую приближённость к системе где ваш проект будет использоваться, если на той системе вы также воспользуетесь изолированным virtualenv’ом.
Итак, создать виртуальное окружение можно так:
$ virtualenv --no-site-packages venv
Где:
- —no-site-packages — ключ для создания изолированного окружения;
- venv — путь где будет создано окружение.
При выборе пути, обратите внимание, что виртуальное окружение обычно нельзя переместить командой mv — оно от этого перестанет работать. Есть флаг для создания “мобильных” виртуальных окружений, но когда я последний раз его пробовал использовать поддержка была только экспериментальной и у меня всё равно всё сломалось.
Использование виртуального окружения
Теперь, когда окружение создано, чтобы его использовать из консоли можно воспользоваться разными вариантами, например:
- Загрузить переменные окружения путём выполнения команды:
$ source venv/bin/activate
- Каждый раз указывать нужный интерпретатор python, например, для выполнения скрипты main.py:
./venv/bin/python main.py
Я пользуюсь первым способом, но, стоит отметить, что команда source отсутствует в командной оболочке sh, поэтому при написании скриптов для для командной строки указывайте bash или zsh в качестве интерпретатора.
После активации, внутри виртуального окружения, любой пакет может быть установлен с помощью pip (хотя, и не только, просто это самый распространённый способ):
(venv) $ pip install Django
Используй virtualenvwrapper (для Windows virtualenvwrapper-win) и жизнь станет проще
Спасибо за совет. По virtualenvwrapper предполагалось написать отдельно, когда дойдут руки, а так использую уже почти год. Да и хотелось бы чуть более, чем просто обзорную статью.