Category: Tech articles

  • virtualenv

    \"\"На официальном сайте virtualenv в разделе \”Installation\” рекомендуется устанавливать virtualenv через менеджер Python-пакетов pip (командой \”pip install virtualenv\”). Однако далеко не всегда pip установлен в системе по-умолчанию. Я не стал исключением: команду pip система не понимает. Идем на официальный сайт и видим, что pip рекомендуется использовать в пределах виртуального окружения virtualenv. При установке virtualenv, pip устанавливается автоматически. Выходит, официальные сайты обеих программ рекомендуют устанавливать virtualenv через pip, а pip – через virtualenv.

    Примечание: есть, конечно, множество других способов установки того и другого (через easy_install, скачивание deb-пакетов или python-установщиков) –  все эти способы также описаны на официальных сайтах или на чьих-то блогах. Но все-таки что-то тянет меня придерживаться рекомендуемых способов от официальных разработчиков.

    Если следовать концепции виртуальных окружений – логично использовать pip в пределах virtualenv, а не глобально во всей системе. Тем более нахаляву, что и поставится он автоматически вместе с virtualenv. Значит, прежде всего нужно устанавливать virtualenv. Как?

    Лучшее решение – установка из репозиториев (почему-то этот вариант не упоминается на официальном сайте virtualenv).

    Python 2.x

    1. Для установки virtualenv набираем в терминале:

    sudo apt-get install python-virtualenv

    2. Создаем папку, внутри которой будут храниться папки будущих виртуальных окружений. Лучше всего создать такую папку в пределах своей домашней директории, чтобы не было проблем с правами доступа. Пусть эта папка будет называться \”projects\”:

    mkdir projects

    3. Создаем виртуальное окружение внутри папки projects. Пусть наше первое виртуальное окружение будет называться \”project_one\”.

    cd projects
    virtualenv project_one

    (Аналогично могут создаваться виртуальные окружения для каких-то других проектов).

    В результате внутри папки /projects/project_one/ создастся маленькая рабочая среда с папками bin/, include/, lib/, local/, содержащими минимальный \”набор джентльмена\” для работы – python, менеджеры пакетов pip и easy_install. Сюда же могут доставляться все необходимые пакеты, фреймворки (в том числе Django) и утилиты. В пределах каждого виртуального окружения они будут изолированы друг от друга, не оказывая никакого взаимного \”паразитного\” влияния.

    Примечание: во многих руководствах по работе с виртуальными окружениями рекомендуется выполнять команду virtualenv с ключом –no-site-packages. Применение этого ключа позволяет создавать виртуальное окружение, изолированное от системной питоновской папки site-packages, что повышает степень автономности. Так вот в новых версиях virtualenv указывать этот ключ не обязательно, поскольку в них эта опция включена по-умолчанию.

    4. Для активации нужно виртуального окружения нужно зайти в его папку (\”cd project_one\”) и выполнить следующее:

    source bin/activate

    После активации командная строка изменится: перед именем пользователя появится название виртуального окружения в скобках \”(project_one)имя_пользователя>@имя_компьютера ~\”.

    Теперь любые команды по установке пакетов (например, \”pip install django\”) или их удалению будут выполнятся только в пределах активированного окружения.

    Для выхода из виртуального окружения и перехода в обычный режим достаточно набрать:

    deactivate

     

    Python 3.x

    $ python3.4 -m venv --without-pip env
    $ cd env
    $ source ./bin/activate # virtualenv activated
    
    $ wget https://bootstrap.pypa.io/get-pip.py # get installation script for pip
    $ python3.4 get-pip.py
    $ deactivate
    $ source venvdir/bin/activate
    
    $ pip list # just to check that pip works!