LoginSignup
6
8

More than 3 years have passed since last update.

いまさらながら、Python3.7をCentOS/RHEL 7に導入する。

Last updated at Posted at 2019-03-05

事前準備

下記コマンドを実行して、各パッケージを導入する

yum install gcc openssl-devel bzip2-devel libffi-devel

libffi-develは、7.3.1以降でインストール時に必要なパッケージ

インストールするソースコード

Pythonの公式から拾ってくる。
Python.org:https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

ソースコードを展開

ここでは、次の場所に展開します。
ソースコード:/usr/local/src/Python-3.7.x
インストール先:/usr/local/Python3.7/default
※今後バージョンを変更することを考えてシンボリックリンク経由でインストールする
保存先:/usr/local/Python-3.7.1

展開~インストールまで

ファイルを解凍し回答先へ移動

mkdir /usr/local/src/Python-3.7.1
tar xzf Python-3.7.1.tgz -C /usr/local/src/Python-3.7.1
cd /usr/local/src/Python-3.7.1

バージョン変更を容易にするためのシンボリックファイル作成

mkdir /usr/local/Python3.7/Python-3.7.2rc1
ln -s /usr/local/Python3.7/Python-3.7.2rc1 /usr/local/Python3.7/latest
ln -s /usr/local/Python3.7/latest /usr/local/Python3.7/default

インストール

command
cd /usr/local/src/Python-3.7.1
./configure --enable-optimizations --prefix=/usr/local/Python3.7/default
make -j4
make altinstall

※ make の-jオプションはコンパイル時のCPUの数を指定できる、複数あるなら複数個指定、無いなら-jを付与しないで実行

pipを使えるようにする

Pythonのモジュールを管理するツールにpipがあり、ほぼ必須といえる。3.4系以降のpythonを導入した場合は、pipが自動でインストールされるが、今回の方法だとパスが通らないので、次の手順を実施する。

echo "export PATH="/usr/local/Python3.7/default/bin:$PATH"" >> /etc/profile
ln -s /usr/local/Python3.7/default/bin/pip3.7 /usr/local/Python3.7/default/bin/pip

以下のコマンドを実行して、バージョンが出力されるか確認する

# pip -V
pip 10.0.1 from /usr/local/Python/lib/python3.7/site-packages/pip (python 3.7)

pythonのバージョンを確認する。

# su -
# python --version
Python 3.7.1
  • Python 2.7.x と表示された場合 その環境には、別なpythonが導入されているため、そっちにパスが通っています。 ので、python3用のパスを通します。下記コマンドを実行してください。
ln -s /usr/local/Python3.7/default/bin/python3.7 /usr/local/Python3.7/default/bin/python
ln -s /usr/local/Python3.7/default/bin/python /usr/local/bin/python
ln -s /usr/local/Python3.7/default/bin/python /usr/local/bin/python3
  • 使用可能なモジュールを確認しつつ、インストールが出来たか確認 下記を記述して実行する。
# cat help_modules.py
# -*- coding: utf-8 -*-
# prints a list of existing modules
print(help('modules'))

実行する。現在使用可能なモジュール一覧がでてくればインストール成功

# python help_modules.py

Please wait a moment while I gather a list of all available modules...
/usr/lib64/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed
  import gobject._gobject
BaseHTTPServer      cProfile            inspect             rpmUtils
Bastion             cStringIO           io                  runpy
CDROM               calendar            ipaddress           sched
CGIHTTPServer       cgi                 itertools           schedutils
ConfigParser        cgitb               json                select
Cookie              chunk               keyword             selinux
DLFCN               cmath               lib2to3             sets
DocXMLRPCServer     cmd                 liblzma             setuptools
:(以下略)
6
8
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8