Среда разработки (VENV) Python3 в CentOS 7

Для запуска скриптов на Python 3 потребовалось настроить виртуальное окружение. Но как известно, на CentOS 7 только Python 2.x. Можно конечно рядом установить Python 3, но тогда могут возникнуть различные конфликты, начиная от pip и заканчивая python-модулями.

Отличное решение, чтобы изолировать Python 3 и его модули от Python 2 или использовать в разработке разные версии модулей - это настроить изолированное окружение. В этой статье вы узнаете как это сделать.

Установка Python 3.6

В CentOS 7 по умолчанию установлен Python 2.7. Теперь установим Python 3.6
sudo yum install -y python36

Проверим
python3 -V
Python 3.6.8

Установим pip
sudo yum install -y python3-pip

Установим дополнительные пакеты и обновим Python
sudo yum groupinstall -y "Development Tools" "Development Libraries"
sudo yum update -y python3
sudo yum install -y python3-devel

Добавим репозиторий epel-release, чтобы можно было установить VIRTUAVENV
sudo yum -y install epel-release

И установим VIRTUALENV
sudo yum install -y python36-virtualenv

Всё готово для создания среды разработки.


Создание среды разработки

С помощью модуля venv создадим среду разработки под названием jango_1.11_env
python3 -m venv jango_1.11_env

Теперь у вас создана папка jango_1.11_env
$ ll jango_1.11_env/
total 4
drwxrwxr-x 2 m.ko m.ko 173 Jul 15 05:28 bin
drwxrwxr-x 2 m.ko m.ko   6 Jul 15 05:28 include
drwxrwxr-x 3 m.ko m.ko  23 Jul 15 05:28 lib
lrwxrwxrwx 1 m.ko m.ko   3 Jul 15 05:28 lib64 -> lib
-rw-rw-r-- 1 m.ko m.ko  69 Jul 15 05:28 pyvenv.cfg

Активируем наше окружение
$ source jango_1.11_env/bin/activate
(jango_1.11_env) [m.ko@localhost ~]$

Жирным выделил (jango_1.11_env). Это значит, что вы внутри изолированного окружения и теперь можете устанавливать любые модули для Python, которые будут установлены и работать только в этом окружении.

Деактивировать окружение
(jango_1.11_env) [m.ko@localhost ~]$ deactivate
[m.ko@localhost ~]$

При этом окружение не будет удалено. Удалить его можно просто rm -r jango_1.11_env.

Установка модулей в окружении jango_1.11_env

Активируем окружение
$ source jango_1.11_env/bin/activate
(jango_1.11_env) [m.ko@localhost ~]$

Пробуем установить python-модуль pyTelegramBotAPI==3.6.7
(jango_1.11_env) [root@centos-7-for-experiments ~]# pip install pyTelegramBotAPI
Collecting pyTelegramBotAPI
  Using cached https://files.pythonhosted.org/packages/9a/52/1f937ff9ac3823acfa40494788de2429833594009061d89723c33c9ddafe/pyTelegramBotAPI-3.7.2.tar.gz
Collecting requests (from pyTelegramBotAPI)
  Using cached https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl
Collecting six (from pyTelegramBotAPI)
  Cache entry deserialization failed, entry ignored
  Using cached https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
Collecting chardet<4,>=3.0.2 (from requests->pyTelegramBotAPI)
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests->pyTelegramBotAPI)
  Using cached https://files.pythonhosted.org/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl
Collecting idna<3,>=2.5 (from requests->pyTelegramBotAPI)
  Using cached https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests->pyTelegramBotAPI)
  Using cached https://files.pythonhosted.org/packages/5e/c4/6c4fe722df5343c33226f0b4e0bb042e4dc13483228b4718baf286f86d87/certifi-2020.6.20-py2.py3-none-any.whl
Installing collected packages: chardet, urllib3, idna, certifi, requests, six, pyTelegramBotAPI
  Running setup.py install for pyTelegramBotAPI ... done
Successfully installed certifi-2020.6.20 chardet-3.0.4 idna-2.10 pyTelegramBotAPI-3.7.2 requests-2.24.0 six-1.15.0 urllib3-1.25.9
You are using pip version 9.0.3, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Всё отлично, но мы видим, что "You are using pip version 9.0.3, however version 20.1.1 is available.". Давайте обновимся. Это обновление будет произведено только внутри этого окружения.
(jango_1.11_env) [root@centos-7-for-experiments ~]# pip install --upgrade pip
Cache entry deserialization failed, entry ignored
Collecting pip
  Using cached https://files.pythonhosted.org/packages/43/84/23ed6a1796480a6f1a2d38f2802901d078266bda38388954d01d3f2e821d/pip-20.1.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 9.0.3
    Uninstalling pip-9.0.3:
      Successfully uninstalled pip-9.0.3
Successfully installed pip-20.1.1

Суперрр )

Добавить комментарий