はじめに
Python3.7のビルドとインストール、venv環境の構築手順を紹介します。デフォルトでインストールされている Pythonに影響を与えないよう、任意の場所(/opt/python37 や ~/opt/python37など)にPython3.7をインストールします。このPython3.7を使って、venv環境を構築できるようにします。
Python3.7インストール手順
ビルド環境構築
下記コマンドを実行して、Python3.7をビルドできるようにします。
$ sudo yum groupinstall 'Development tools'
$ sudo yum install openssl-devel sqlite-devel libffi-devel
Debian系のOSでは、下記コマンドを実行します。
$ sudo apt update
$ sudo apt install build-essential \
libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline6-dev libsqlite3-dev \
libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev tk-dev libffi-dev
ソースコードダウンロード
下記コマンドを実行して、Python3.7のソースコードをダウンロードします。
$ mkdir -p ~/src
$ curl -L https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz \
-o ~/src/Python-3.7.4.tar.xz
ビルド
下記コマンドを実行して、Python3.7をビルドします。インストール先は –prefix で指定します。環境変数 _prefix を用意してインストール先を切り替えられるようにしました。この場合、/opt/python3.7 にインストールするようにしたときの例になります。
$ cd ~/src/
$ tar fx Python-3.7.4.tar.xz
$ cd Python-3.7.4
$ _prefix="/opt/python3.7"
(or _prefix="${HOME}/opt/python3.7")
$ ./configure \
--prefix=${_prefix} \
--enable-shared \
LDFLAGS=-Wl,-rpath,${_prefix}/lib \
--enable-optimizations
$ make
インストール
下記コマンドを実行して、Python3.7をインストールします。ユーザー権限で書き込みできるディレクトリにインストールする場合は、sudoを付けずに実行してください。sudoを付けてしまうと、更新作業などを実施する際、ユーザー権限で操作できなくなります。
$ cd ~/src/Python-3.7.4
$ sudo make altinstall
(or make install)
venv環境構築手順
venv環境作成
下記コマンドを実行して、Python3.7のvenv環境を作成します。python3.7コマンドは先の手順でインストールしたPython3.7のインストール先にあるものを指定します。venv環境について、ここでは名前をvenv37としてホームディレクトリ直下に作成していますが、わかりやすい任意の名称、任意のディレクトリに作成することができます。
$ cd ~/.
$ /opt/python3.7/bin/python3.7 -m venv venv37
(or ${HOME}/opt/python3.7/bin/python3.7 -m venv venv37)
venv環境有効化
下記コマンドを実行して、venv環境を有効化します。venv環境が有効になると、プロンプトに (venv37)が明示されるようになります。この状態でpipコマンドなどでパッケージをインストールすると、このvenv環境内でのみ有効なパッケージとしてインストールされます。OS標準の環境や、他のvenv環境には影響を与えません。
$ source ~/venv37/bin/activate
(venv37)$ pip install <パッケージ名>
(venv37)$ python -V
Python 3.7.4
venv環境無効化
下記コマンドを実行して、venv環境から抜けることができます。venv環境名である(venv37)が表示されなくなり、venv環境から抜けたことが確認できます。
(venv37) $ deactivate
$ python -V
Python 2.7.16