Установка Python 3 на Centos 7

Thank you for reading this post, don't forget to subscribe!

В стан­дарт­ной уста­нов­ке в систе­ме centos 7 уста­нов­ле­на вер­сия пито­на 2.7

Если про­из­во­дить уста­нов­ку паке­та из стан­дарт­но­го репо­зи­то­рия или epel, по-умол­ча­нию будет рабо­тать ста­рая версия.

Вам может быть нуж­но иметь 2 и более вер­сий пито­на в систе­ме и как-то опе­ра­тив­но пере­клю­чать­ся, для запус­ка скрип­тов с раз­ной версией.

Если вам надо про­сто поста­вить голый Python вер­сии, к при­ме­ру, 3.6, то на момент напи­са­ния ста­тьи она есть в репо­зи­то­рии epel

# yum install epel-release

# yum install python36

И все. Но если после это­го, вы про­ве­ри­те вер­сию пито­на в консоли:

# python -V
Python 2.7.5

Уви­ди­те, что по-умол­ча­нию вызы­ва­ет­ся ста­рая вер­сия. Если нуж­но запу­стить имен­но новую, то надо запус­кать имен­но вер­сию 3.6.

# python36 -V
Python 3.6.3

Вы може­те заме­нить стан­дарт­ную вер­сию, изме­нив сим­воль­ную ссыл­ку python с /usr/bin/python2 на /usr/bin/python36. Но если кому-то нуж­на будет ста­рая вер­сия, нач­нут­ся про­бле­мы. Напри­мер, пере­ста­нет рабо­тать yum

В реко­мен­да­ци­ях гово­рит­ся, что  вме­сто репо­зи­то­рия epel нуж­но исполь­зо­вать ius для уста­нов­ки python. Как мини­мум, пото­му что там сра­зу же мож­но уста­но­вить pip нуж­но вер­сии. К при­ме­ру, в epel есть python36, но нет к нему pip36, толь­ко 3.4. Это неудоб­но. Так что под­клю­ча­ем ius репо­зи­то­рий и ста­вим все необходимое.
yum install https://centos7.iuscommunity.org/ius-release.rpm
# yum install python36u python36u-devel python36u-pip

Про­ве­ря­ем:
# python3.6 -V
Python 3.6.5

Установка нескольких версий Python

Что сде­лать, что­бы удоб­но рабо­тать с раз­ны­ми вер­си­я­ми пито­на? Мож­но уста­но­вить репо­зи­то­рий так назы­ва­е­мой Software Collections или SLC и поста­вить вер­сию пито­на отту­да. Ее удоб­ство будет в том, что суще­ству­ет инстру­мент, кото­рый поз­во­лит запу­стить bash обо­лоч­ку с новой вер­си­ей пито­на, выпол­нить скрип­ты, кото­рым нуж­на эта вер­сия и про­сто вый­ти из обо­лоч­ки. Мне как раз помог такой спо­соб, когда нуж­но было быст­ро разо­во выпол­нить несколь­ко скрип­тов, кото­рым нуж­на была вер­сия 3 и кото­рые дела­ли про­вер­ку этой вер­сии через обра­ще­ние к систем­но­му python.

Под­клю­ча­ем репо­зи­то­рий SCL:
yum install centos-release-scl

Ста­вим Python нуж­ной вер­сии, напри­мер 3.6.
yum install rh-python36

Теперь мож­но сде­лать вот так:
# scl enable rh-python36 bash

И мы ока­зы­ва­ем­ся в кон­со­ли с нуж­ной вер­си­ей питона.
# python -V
Python 3.6.3

Мож­но запус­кать скрип­ты, кото­рые тре­бу­ют имен­но эту вер­сию. Они при запус­ке убе­дят­ся, что вер­сия имен­но та, что нужна.

Установка менеджера pip и пакетов python

Ниже опи­са­но как уста­но­вить пакет­ный мене­джер pip нуж­ной вер­сии и паке­ты к нему. Как уже гово­рил выше, нуж­но под­клю­чить репо­зи­то­рий ius, если не под­клю­чи­ли ранее и выпол­нить установку.
# yum install https://centos7.iuscommunity.org/ius-release.rpm
# yum install python36u-pip

Мож­но сра­зу же после уста­нов­ки обно­вить pip до послед­ней версии:

pip3.6 install --upgrade pip

На этом все