Работа с независимыми Python окружениями

Уверен что вам нравится работать на удобном рабочем месте, где все под рукой и в порядке.

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

Теперь, начиная с Python 3.6 это стало еще проще. Раньше вам требовалось установить virtualenv. Но теперь в лучших традициях python “батарейки в комплекте”!

python3 -m venv <venv folder name>

Для Windows

python -m venv <venv folder name>

Эта команда создаст в <venv folder name> “виртуальное окружение” где будут все используемые в этом окружении библиотеки.

Чтобы “активировать” его (обратите внимание на . это сокращение для source)

. <venv folder name>/bin/activate 

Для Windows

<venv folder name>\Scripts\activate.bat

После активации будут использоваться Python библиотеки из из этого окружения. И когда вы что-то устанавливаете с помощью pip install это меняет только это окружение и никак не испортит другие окружения или ваши глобальные настройки системы.

Чтобы “выйти” из окружения

deactivate    

Чтобы вам было еще проще этим пользоваться я написал скрипт activate.sh:

Он работает только в Linux и MacOS (обратите внимание на .)

. ./acivate.sh

Скрипт создаст окружение если оно еще не создано. И установит вспе библиотеки перечисленные в файле requirements.txt. Если окружение уже было создано ранее то скрипт не будет его создавать повторно (см проверку на строке 25).

После этого скрипт активирует окружение (строка 32). В переменной PYTHON (строка 7) в скрипте вы можете указать необходимую вам версию Python. При желении можно изменить и имя каталога VENV_FOLDER (строка 6).

Строки 14..22 проверяют что вы правильно вызвали скрипт с помощью source (или сокращения .).

Если у вас возникнет ошибка .. 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1 скорее всего это означает что модуль ensurepip не установлен для нужной вам версии Python (переменная PYTHON) и вы должны установить ее. Например для python3.7 в Ubuntu:

sudo apt-get install python3.7-venv