Создание виртуального окружения для python3 на Ubuntu

python_linuxТрадиционно для создания виртуального окружения для Python используется модуль virtualenv. Но, начиная с версии Python 3.3, появилась возможность создания «легкого» виртуального окружения с помощью встроенного модуля pyvenv.

Официальная документация по модулю pyvenv.

1. Для начала можно проверить переменную $PATH, которая указывает, какие пути прописаны для запуска из командной оболочки:

$ echo $PATH
/home/pavel/installed/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Согласно данной информации python установлен как в пакете Anaconda (/home/pavel/installed/anaconda3/bin), так и в системном варианте (/usr/bin).

По умолчанию (если просто набрать python) запускается python3 из пакета Anaconda, а если я хочу получить доступ к системному python, нужно набрать: /usr/bin/python3.

Если у вас не установлены никакие дополнительные пакеты, то для вызова системного python3 достаточно набрать в командной строке: python3.

2. Если не установлена поддержка виртуального окружения, то есть система выдает при попытках создания (см. п.3) следующее сообщение:

The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.

Тогда нужно установить:

$ sudo apt install python3-venv

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

$ cd work/python
$ /usr/bin/python3 -m venv myvenv

В результате в директории work/python будет создана папка myvenv с необходимым содержимым для поддержки виртуального окружения.

4. Активировать виртуальное окружение можно командой (из папки, где оно создано):

$ source myenv/bin/activate
(myvenv) $

В результате в bash в начале командной строки появиться надпись (myvenv).

5. Для деактивации используется команда:

(myvenv) $ deactivate
$

6. Можно убедится, что pip и python работают в контейнере:

(myvenv) $ which pip
/home/pavel/work/python/myvenv/bin/pip

(myvenv) $ which python
/home/pavel/work/python/myvenv/bin/python

(myvenv) $ python -V
Python 3.5.2

7. Если виртуальное окружение создавалась для работы с Django, то далее нужно выполнить следующие команды:

(myvenv) $ pip install django # Устанавливаем Django
(myvenv) $ pip freeze # Смотрим какие при этом зависимости установились
Django==1.10.2
(myvenv) $ python django-admin.py startproject newproject # Создаем новый проект
(myvenv) $ pip freeze > newproject/requirements.txt # Сохраняем зависимости

При подготовке статьи использовались следующие источники:

Любые замечания, пожелания и дополнения к статье пишите в комментариях.


Дополнительная информация (добавлена 21-03-2017).

Виртуальное окружение можно создавать и используя установленную Anaconda с помощью менеджера пакетов Conda. При этом есть возможность гибко выбирать, какую версию python нужно использовать.

Все доступные версии python можно проверить командой:

$ conda search python

Чтобы создать виртуальное окружение с именем venv и самым последним python из 3-й ветки, достаточно выполнить:

$ conda create --name venv python=3

Файлы окружения будут располагаться в папке envs внутри директории с Anaconda.

Активация и деактивация виртуального окружения производится с помощью следующих команд:

$ source activate venv
$ source deactivate venv

Посмотреть все имеющиеся виртуальные окружения, созданные с помощью Conda можно командой:

$ conda info --envs

Информация взята по ссылке: https://conda.io/docs/py2or3.html

Если Anaconda не прописана в системном пути $PATH, то для запуска созданного Conda виртуального окружения может потребоваться набирать длинную команду, например:

$ source /home/pavel/installed/anaconda3/bin/activate venv

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

$ touch begin.sh
$ sudo chmod +x begin.sh
$ gedit begin.sh

Первая строчка создает файл. Вторая — присваивает ему атрибут «исполняемый». Третья — запускает редактор для внесения правок в файл. В редакторе добавляем и сохраняем следующий код:

#!/bin/bash
source /home/pavel/installed/anaconda3/bin/activate venv
cd workdir
jupyter notebook

Из консоли такой файл запускается командой bash begin.sh или ./begin.sh. Можно его запускать двойным кликом левой клавишей мышки и из файлового менеджера Nautilus. Если этого не происходит, нужно перейти в раздел «Параметры» — «Поведение» и поставить галочку «Каждый раз спрашивать» в разделе «Исполняемые текстовые файлы».

Источник информации — http://forum.ubuntu.ru/index.php?topic=77841.0


Добавлено 29-03-2017:

Для дополнительного чтения и понимания сути виртуального окружения есть хорошая статья (и комментарии) — https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/. В ней дается вводная информация и базовые сведения по работе с pip и virtualenv.

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