Как настроить и использовать виртуальную среду Python в Ubuntu?

73

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

Герхард Бургер
источник

Ответы:

99

С virtualenvwrapper(удобные обертки для функциональности virtualenv)

Установить virtualenv

Установить virtualenvс

sudo apt-get install virtualenv

(для Ubuntu 14.04 (надежная) установка python-virtualenv)

Установить virtualenvwrapper

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

Как пакет Ubuntu (из Ubuntu 16.04)

Бегать

sudo apt install virtualenvwrapper

тогда беги

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

Используя пункт

  1. Установить и / или обновить пип

    Установите pip для Python 2 с

    sudo apt-get install python-pip

    или для Python 3

    sudo apt-get install python3-pip

    (если вы используете Python 3, вам может потребоваться использовать его pip3вместо pipостальной части этого руководства).

    Необязательно (но рекомендуется): включите автозаполнение bash для pip

    Бегать

    pip completion --bash >> ~/.bashrc

    и запустить, source ~/.bashrcчтобы включить.

  2. Установить virtualenvwrapper

    Поскольку мы хотим избежать,sudo pip мы устанавливаем virtualenvwrapperлокально (по умолчанию в ~/.local) с помощью:

    pip install --user virtualenvwrapper

    а также

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Источник virtualenvwrapper в .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

Настройка virtualenv и virtualenvwrapper:

Сначала мы экспортируем WORKON_HOMEпеременную, которая содержит каталог, в котором должны храниться наши виртуальные среды. Давайте сделаем это~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

Теперь также создайте этот каталог

mkdir $WORKON_HOME

и поместите этот экспорт в наш ~/.bashrcфайл, чтобы эта переменная автоматически определялась

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

Мы также можем добавить некоторые дополнительные приемы, подобные следующему, что гарантирует, что если pipсоздается дополнительная виртуальная среда, она также помещается в наш WORKON_HOMEкаталог:

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

Исходный код ~ / .bashrc для загрузки изменений

source ~/.bashrc

Проверьте, работает ли это

Теперь мы создаем нашу первую виртуальную среду. -pАргумент является необязательным, он используется , чтобы установить версию Python для использования; это также может быть, python3например.

mkvirtualenv -p python2.7 test

Вы увидите, что среда будет настроена, и ваше приглашение теперь включает в себя имя вашей активной среды в скобках. Также, если вы сейчас бежите

python -c "import sys; print sys.path"

Вы должны увидеть много, /home/user/.virtualenv/...потому что теперь он не использует системные пакеты сайта.

Вы можете отключить свою среду, запустив

deactivate

и если вы хотите работать над этим снова, просто введите

workon test

Наконец, если вы хотите удалить свою среду, введите

rmvirtualenv test

Наслаждайтесь!


Спасибо автору этого поста .

Герхард Бургер
источник
2
python-pipи python-virtualenvустанавливаются через репозиторий Ubuntu, нет необходимости в ручной установке.
Тимо
2
Однако в Ubuntu мы рекомендуем пакеты Ubuntu по многим причинам. В старых версиях pip или virtualenv нет ничего плохого, они вполне способны.
камышом
1
@GerhardBurger: Если вы создадите python3 virtualenv, он получит пункт, который работает в python3. Если вы используете virtualenv в Ubuntu для создания virtualenv, все, что вы сделали, будет заключено в virtualenv. Если вы начнете использовать sudo easy_install, это приведет к беспорядку в / usr / local, его нетрудно очистить без особой выгоды.
перекати
похоже, псевдоним теперь не нужен: --no-site-packagesпо умолчанию и --distributeустарел
int_ua
В случае, если mkvirtualenv testне работает, см. Также: stackoverflow.com/questions/15608236/…
Никос Александрис
8

Виртуальные среды предлагают способ управления и изоляции зависимостей для каждого проекта. Кроме того, они также избегают всей sudo pip installситуации, которая представляет собой угрозу безопасности, как я объяснил в https://askubuntu.com/a/802594/15003 . Официальная документация Python также поощряет использование виртуальных сред .

Самый простой способ создания и использования виртуальных сред для Python 2 и Python 3 - это установить virtualenvс помощью aptили apt-get. Для каждого проекта Python создайте virtualenv, а затем активируйте его. Обратите внимание, что virtualenv специфичен для конкретной версии Python. После активации используйте pipдля установки пакетов Python как обычно, независимо от того, используете ли вы Python 2 или 3; нет необходимости использовать pip3для Python 3. sudoиспользуется только для установки virtualenvи не используется с pip, поэтому избежать вышеупомянутой угрозы безопасности. Команды для этого:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package

Если вы хотите создать virtualenv для Python 3, замените virtualenv venvна:

virtualenv venv -p python3

Узнайте больше о различных наворотах virtualenvна https://virtualenv.pypa.io/en/stable/ .

edwinksl
источник
1
sourceспасает меня много команд
vnpnlz
OSError: [Errno 40] Слишком много уровней символических ссылок: '/ var / www / html / python / check / venv / bin / python'
Сараванан Нандан
@SaravananNandhan Пожалуйста, задайте новый вопрос с необходимыми деталями.
Edwinksl
4

Это просто, вы устанавливаете python-virtualenv . Затем вы можете создать virtualenv с помощью virtualenvкоманды. Смотрите их документацию для получения дополнительной информации.

перекати-поле
источник
3

С модулем venv, доступным в Python 3.3 (и Ubuntu 15.10)

Виртуальные среды (venvs) настолько популярны, что функциональность теперь включена в сам Python (начиная с версии 3.3). Чтобы использовать его в Ubuntu, вам необходимо установить python3-venv(так как ensurepipмодуль недоступен):

sudo apt-get install python3-venv

После этого вы можете использовать

pyvenv myvirtualenv

создать виртуальную среду под названием myvirtualenv. Вы можете использовать

source myvirtualenv/bin/activate

активировать виртуальную среду. Для деактивации просто наберите

deactivate

EDIT:pyvenv сценарий устарел в пользу python3 -m venv. Это предотвращает путаницу в отношении того, к чему pyvenvподключен интерпретатор Python и, следовательно, какой интерпретатор Python будет использоваться виртуальной средой. ( источник )

Герхард Бургер
источник