Среда разработки (VENV) Python3 в CentOS 7
Для запуска скриптов на Python 3 потребовалось настроить виртуальное окружение. Но как известно, на CentOS 7 только Python 2.x. Можно конечно рядом установить Python 3, но тогда могут возникнуть различные конфликты, начиная от pip и заканчивая python-модулями.
Отличное решение, чтобы изолировать Python 3 и его модули от Python 2 или использовать в разработке разные версии модулей - это настроить изолированное окружение. В этой статье вы узнаете как это сделать.
Проверим
Установим pip
Установим дополнительные пакеты и обновим Python
Добавим репозиторий epel-release, чтобы можно было установить VIRTUAVENV
И установим VIRTUALENV
Всё готово для создания среды разработки.
С помощью модуля venv создадим среду разработки под названием jango_1.11_env
Теперь у вас создана папка jango_1.11_env
Активируем наше окружение
Жирным выделил (jango_1.11_env). Это значит, что вы внутри изолированного окружения и теперь можете устанавливать любые модули для Python, которые будут установлены и работать только в этом окружении.
Деактивировать окружение
При этом окружение не будет удалено. Удалить его можно просто rm -r jango_1.11_env.
Пробуем установить python-модуль pyTelegramBotAPI==3.6.7
Всё отлично, но мы видим, что "You are using pip version 9.0.3, however version 20.1.1 is available.". Давайте обновимся. Это обновление будет произведено только внутри этого окружения.
Суперрр )
Отличное решение, чтобы изолировать Python 3 и его модули от Python 2 или использовать в разработке разные версии модулей - это настроить изолированное окружение. В этой статье вы узнаете как это сделать.
Установка Python 3.6
В CentOS 7 по умолчанию установлен Python 2.7. Теперь установим Python 3.6sudo 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_envpython3 -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
Суперрр )